0
2

More than 1 year has passed since last update.

データサイエンス道1~pandasでデータ操作(基本)~

Last updated at Posted at 2022-09-30

こんにちは、るっちです。
今回は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

次回からは、実際に統計的な話に入っていきたいと思います。
確率分布か、推定・検定か、回帰分析か、、、

参考文献

  • 「データサイエンス教本」
0
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2