こんにちは、るっちです。
今回はPythonのPandasを用いたデータ操作についての記事です。
※基本的な内容に絞り、グループ化等のやや複雑なところは書きませぬ。
この記事のゴール
Pandasを使って
- データを取得
- 見たい情報だけを抜き出して確認
が出来るようになること。
目次
- Pandasとは
- データの格納
- read_csv()
- データの絞り込み
- df[カラム名]
- loc, iloc
- まとめ
Pandasとは
pandasはデータの前処理を補助してくれるパッケージです。
また、pandasは外部ライブラリであるため使用にはインストールが必要です。
pip install pandas
データの取得
CSVファイルからデータを取得する方法について解説します。
read_csv()
データをCSVやExcelファイルから取り込みたい場合、read_csv()やread_excel()を使用します。
df = pd.read_csv("./raw/data.csv", encoding="cp932")
第1引数に読み込みたいファイルのPATH。←必須
第2引数以降にはオプションを書きます。←無くてもよい。
今回は第2引数で文字コードを指定しています。
データの中身を確認すると、
print(df)
Out
name math science english
0 Taro 60 55 45
1 jiro 80 90 30
2 Ichiro 30 35 70
3 Yui 80 80 80
4 Mari 10 10 90
5 Ryuji 50 50 50
6 Takuya 100 100 5
7 Tomoya 45 30 70
8 Toshi 10 5 100
9 Aoi 30 20 65
10 Kenji 90 90 5
と表示され、データを取り出せていることが分かります。
※今回用に適当に用意したデータです。
また、インデックスにする列を指定することもできます。
# index_con=カラム名でインデックスを指定する。
df = pd.read_csv("./raw/data.csv", index_col="name", encoding="cp932")
print(df)
out
math science english
name
Taro 60 55 45
jiro 80 90 30
Ichiro 30 35 70
Yui 80 80 80
Mari 10 10 90
Ryuji 50 50 50
Takuya 100 100 5
Tomoya 45 30 70
Toshi 10 5 100
Aoi 30 20 65
Kenji 90 90 5
データの絞り込み
読み込んだデータから、行や列を指定して取得する方法を解説します。
df[カラム名]
読み込んだデータのカラム名を指定して取り出す方法です。
mathのデータを抽出してみます。
# []内にカラム名を入力
df["math"]
もしくは、
# カラムのリストを取得し、その一番目(math)を入力している。
df[df.columns[0]]
out
name
Taro 60
jiro 80
Ichiro 30
Yui 80
Mari 10
Ryuji 50
Takuya 100
Tomoya 45
Toshi 10
Aoi 30
Kenji 90
mathのデータが抽出できていることが確認できました。
インデックスとしてnameも出力されています。
2つ目の記載方法は個人的によく使います。カラム名をいちいち書くのが面倒な時に使います。
loc, iloc
接頭に"i"がつくと0以上の自然数を指定、つかないとラベル名(インデックス)(文字)を指定します。
print(df.iloc[0:4])
out
math science english
name
Taro 60 55 45
jiro 80 90 30
Ichiro 30 35 70
Yui 80 80 80
インデックス番号は0からであり、0から4行目の手前(Mariの手前)を抽出したことになります。
Pythonのスライス規則についてご存じであれば分かりやすい思います。
df.loc["Ichiro":"Aoi"]
out
math science english
name
Ichiro 30 35 70
Yui 80 80 80
Mari 10 10 90
Ryuji 50 50 50
Takuya 100 100 5
Tomoya 45 30 70
Toshi 10 5 100
Aoi 30 20 65
ことらも同様にスライスを用いていますが、指定したインデックスの始めと終わりまでを抽出します。
また、loc[]にインデックスのリストを入れると、該当インデックスのみを抽出することができます。
df.loc[["Ichiro","Tomoya","Aoi"]]
out
math science english
name
Ichiro 30 35 70
Tomoya 45 30 70
Aoi 30 20 65
まとめ
以上が基礎的な内容でしたが、pandasの説明です。
1. read_csv()でデータを読み込み
2. 列の指定はdf[カラム名]
3. 行の指定はiloc, loc
次回からは、実際に統計的な話に入っていきたいと思います。
確率分布か、推定・検定か、回帰分析か、、、
参考文献
- 「データサイエンス教本」