Python:pandasのDataFrameを使ってデータを読み込む
ファイルにあるデータを取り込んでプログラミング内で使いたい。
そういった時に使うpandasのDataFrameをまとめてみました。
そもそもpandasって何?
データを解析するために必要なものが入ってるライブラリ。
pandasをインストールすると
・データを格納する配列:1次元バージョン(Series)
・データを格納する配列:2次元バージョン(DataFrame)
・グラフを描画(matplotlib)
などなどが使えるようになります。
下準備 その1
今回はpandasを使います。
pandasは標準モジュールではないため、インストールが必要です。
コマンドプロンプトでインストールする場合
pip install pandas
下準備 その2
読み込みたいファイルをどこに置くのか決める。
例:
今回はtest.csvというCSVファイルを読み込んでみよう。
CSVファイルの配置場所は、Pythonの実行環境と同じ場所においてみる。
python/
├ AAA.py(今回実行するファイル)
├ test.csv(読み込みたいCSVファイル)
名前,日付,テスト
Ito,2021/08/10,85
Suzuki,2021/08/10,80
Tanaka,2021/08/10,75
実際にデータを取り込んでみよう!
AAA.py
#まずpandas をimport をする。 import pandas as pd #DataFrameのヘッダーをここでつける。(名前→name,日付→date,テスト→test) cols = ["name","date","test"] #read_csvを使って区切り文字を使ったファイルの読み込みを行う。デフォルトはコンマ。 df = pd.read_csv("test.csv" , encoding = "shift_JIS" , header = 0 ,names = cols ) print(df)
df(イメージ図):
name | date | test | |
---|---|---|---|
0 | Ito | 2021/08/10 | 85 |
1 | Suzuki | 2021/08/10 | 80 |
2 | Tanaka | 2021/08/10 | 75 |
read_csvの引数についての詳しい説明。
コンマ区切りのCSVファイルを読み込みたいだけであれば、
df = pd.read_csv("AAA.csv")
のように、ファイル名だけの記載でもOK
encodingとは?
CSVファイルの文字コードです。
今回のCSVファイルはShift-JISにて作成していたため指定しました。headerとは?
CSVファイルの何行目を列名としていれたいかをここで設定する。(デフォルトは0:最初の行) もしCSVファイル内にヘッダ行がない場合はNoneを指定する。namesとは?
2次元配列に格納されたオブジェクト(df)の列名のリスト。 今回は初めにcolsに代入しておきましたが、直接書き込むでもOKです。その他引数
index_col:行名を指定することができます。
headerとnamesについて
namesを指定する場合はheader=Noneにするというのを見かけました。
今回はどうしてもCSVファイルのヘッダーを使用せずに変更したかったため、
header=0として0行目をヘッダー行として読み込み、
強制的に上書きした形にしてあります。
今のところきちんと動いてはいますが、
以下のようにrenameを使ったほうがいいのかもしれないです。
BBB.py
#まずpandas をimport をする。 import pandas as pd #read_csvを使って区切り文字を使ったファイルの読み込みを行う。デフォルトはコンマ。 df = pd.read_csv("test.csv" , encoding = "shift_JIS" , header = 0 ) print(df) #(名前→name,日付→date,テスト→test) df = df.rename(columns = {"名前":"name","日付":"date","テスト":"test"}) print(df)
CSVを読み込んだすぐのdf(イメージ図):
名前 | 日付 | テスト | |
---|---|---|---|
0 | Ito | 2021/08/10 | 85 |
1 | Suzuki | 2021/08/10 | 80 |
2 | Tanaka | 2021/08/10 | 75 |
rename後のdf(イメージ図):
name | date | test | |
---|---|---|---|
0 | Ito | 2021/08/10 | 85 |
1 | Suzuki | 2021/08/10 | 80 |
2 | Tanaka | 2021/08/10 | 75 |
<最終更新日:2021/08/10>
2021/08/10 投稿