質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

172閲覧

Pythonで複数のcsvファイルを結合してデータフレームにしたい

ko-pasu

総合スコア1

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2024/04/07 01:51

実現したいこと

ゴール:Pythonで複数のcsvファイルを縦に結合してデータフレームに束ねてグラフ化したい

csvファイルは以下の構図のとおり異なるフォルダに共通の名前uriage.csvが格納されています。
(csvの中身のデータは異なるものです)

datasetフォルダ
|_data1フォルダ
|_uriage.csv
|_data2フォルダ
|_uriage.csv
|_data3フォルダ
|uriage.csv
|

発生している問題・分からないこと

独学でPythonを学んでいます。
添付のコードを実行するとエラーが出て解決できずに行き詰ってます。
グラフ化はできるのでデータフレームに束ねるまでの解決策をご教示いただけますと助かります。
よろしくお願いいたします。

該当のソースコード

Python

1import os 2import pandas as pd 3 4# ベースディレクトリのパスを指定 5base_directory = "/Users/hinar/Desktop/dataset" 6 7# 結合されたデータを格納する空のDataFrameを初期化 8combined_df = pd.DataFrame() 9 10# ベースディレクトリ内の各フォルダに対して繰り返し処理 11for file_name in os.listdir(base_directory): 12 folder_path = os.path.join(base_directory, file_name) 13 14 # アイテムがディレクトリであるかどうかを確認 15 if os.path.isdir(folder_path): 16 # フォルダ内の各CSVファイルに対して繰り返し処理 17 for file_name in os.listdir(folder_path): 18 if file_name.lower().endswith(".csv"): 19 file_path = os.path.join(folder_path, file_name) 20 # CSVファイルを読み込んで結合されたDataFrameに追加 21 df = pd.read_csv(file_path) 22 combined_df = combined_df.append(df, ignore_index=True) 23 24# 結合されたDataFrameを表示 25combined_df 26 27print(combined_df)

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

1つのフォルダに異なる名前のcsvファイル(data1.csv、data2.csv、data3.csv…)が格納されている場合のケースはコーディングできたのですが、今回のようにフォルダが違っていて同じ名前のcsvが格納されているケースについては今の状況になった次第です。

補足

特にないです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2024/04/07 02:22

> 添付のコードを実行するとエラーが出て解決できずに行き詰ってます。 エラー内容について質問に追記してください。 > ソースコードを自分なりに変更した 何をどう変更してどう結果が変わったのでしょうか?質問のコードは変更後ですか?エラー内容に変化はありましたか?
ko-pasu

2024/04/07 08:43

対応が遅くなり申し訳ございません。 コメントいただきありがとうございます。 初投稿のため不慣れで内容が不足していたかもしれません。 今後、質問する際はいただいたコメントを意識して詳細記載するよう心がけます。
guest

回答1

0

ベストアンサー

エラーの詳細が不明ですが、glob を利用する場合は以下の様になります。

python

1import glob 2import os 3import pandas as pd 4 5base_directory = "/Users/hinar/Desktop/dataset" 6 7file_names = sorted(glob.glob(os.path.join(base_directory, "*/uriage.csv"))) 8combined_df = pd.concat((pd.read_csv(f) for f in file_names), ignore_index=True) 9 10print(combined_df)

投稿2024/04/07 02:24

melian

総合スコア19825

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ko-pasu

2024/04/07 08:39

お礼が遅くなり申し訳ございません。 早々に回答いただきありがとうございました。 sorted関数、concat関数でシンプルな構成にできること、大変参考になりました。 これを機に応用が利くようちゃんと理解するよう努めたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問