らふのプログラミングメモ

プログラミングメモです。

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ファイル)

test.csv(文字コード:Shift-JIS)の中身


名前,日付,テスト
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 投稿