たのしい工学

プログラミングを学んで、モノをつくりたいひと、効率的に仕事をしたい人のための硬派なブログになりました

【python】pandasを用いたcsvデータ処理の基本

   

今回はpythonのライブラリPandasをつかってcsvデータを処理する基本について紹介していきたいと思います。

基本形式

import pandas as pd
df = pd.read_csv("file.csv",header=None)

※file.csvは任意のcsvファイル

このようにして、csvからpandasにデータを取り込むことができます。

データ表示系コマンド

先頭5行のデータを表示

df.head()

()内に値をわたすと、その行数分データを表示する
df.head(30)なら先頭30行表示

最後尾5行データを表示

df.tail()

データの形状(行,列)形式で表示

df.shape

データ型の表示

type(df)

データの詳細情報を表示

df.info():

基本統計量

df.describe()

ちなみに、統計の基本がわからないひとはこちらで学ぶのもありです。
こちらがかなりわかりやすく紹介してくれていて評判もいいです。

相関関係を出す

df.corr()

不要な行をスキップして、データを読み込む

pd.read_csv("file.csv",skipfooter=X,engine="python")

footerのX行をスキップする
※engineでpythonを指定

カラム名を取得

df.columns

df.columns=[]
で[]内に値を指定していくことおでcolumn名を変更できる

カラムの追加

df.columns["追加したいカラム名"]="データ"

任意のデータを軸にデータを出しなおす(グルーピング)

変数 = df.groupby("任意のデータ軸")

小まとめ

pd.read_csv() CSVデータからデータフレームの作成
DataFrame.head() データフレームの最初の5行を表示(デフォルト)
DataFrame.tail() データフレームの最後の5行を表示(デフォルト)
DataFrame['A'] 列「A」の要素へアクセス
DataFrame.corr() 各項目の相関係数
DataFrame.groupby() グルーピングによるデータの集計

データフレームの値を処理

欠損データの確認

df.insull().any()

isnull()でbool型の返り値が得られる

欠損データの合計値を確認

df.isnull().sum()

欠損データを埋める

df.fillna(method=ffill)
ちなみにfillnaというのは、こういう成り立ちではないかと。
fillna → fill na → fill NaN(意味:欠損データを埋める)
()内のmethod=ffillは最後の有効な値(NaNの前の値)で欠損データを埋めるという意味です。

データの中央値で埋める場合
df['データ'].median()
とします。

Lambda式あるいは関数を用いてデータを追加する方法

ちなみに、Lambda式は関数を式として扱い変数に代入できるようにする手法で、プログラムのコードを簡潔にするメリットがあります。

例1.
lambda式をつかって身長と体重のデータにBMIデータを付加する方法

df['BMI']=df.apply(lambda row: row['Weight']/((row['Height']/100)**2),axis=1)

例2.
関数をつかって身長と体重のデータにBMIデータを付加する方法

def get_bmi(row):
return row['Weight'] / ((row['Height']/100)**2)

df['BMI']=df.apply(get_bmi, axis=1)

上記、例1と2の方法はどちらでも同じ結果が得られます。

データセットのマージ

pd.merge(df1,df2,on='結合するデータのカラム名') 2つのデータフレームの結合
pd.concat(df1,df2) 2つのデータフレームの連結
DataFrame.reset_index データフレームのindexを振り直す

【データフレームの連結と結合の違い】
連結:カラム名の異なるデータ同士をくっつける
結合:カラム名の等しいデータ同士をくっつける

もっと体系的にPandasを学んでいきたいひとは、UdemyでPandasの講座を受講してみるのがおすすめです。

ではでは!

 - プログラミング系, python