pandasにおけるデータフレーム操作のあれこれ

本日はデータ分析に欠かせないpandasのライブラリのうち、
データフレームの操作に関してまとめます。



Today's Contents



python上で各データをエクセルのように構造化させ、
テーブルデータのように扱うことができます。
行を「インデックス」、列を「カラム」と呼び、
任意にデータを操作・整形することも可能です。

整形したデータは後のデータ分析やAI開発に活用することができます。
実際にデータフレームを作成して操作・整形してみましょう。


【インストール】
pip install pandas


【インポート】
import pandas as pd

【バージョン確認】
print(pd.__version__)


【リストから作成】
pref_list=['東京都','東京都','北海道','沖縄'']
pd.DataFrame(data=pref_list)


【辞書から作成】
pref_dict=dict(pref=['東京都','東京都','北海道'], city=['新宿','品川','札幌'], population=[349385,414581,1964894])
pd.DataFrame(data=pref_dict)


【インデックスとカラムを指定して作成】
data_list=[['東京都','新宿',349385], ['東京都','品川',414581], ['北海道','札幌',1964894]]
index_list = ["index1", "index2", "index3"]
col_list =["pref", "city", "population"]
pd.DataFrame(data=data_list, index=index_list, columns=col_list )



【csvの読み込み】
pd.read_csv('test.csv', encoding='cp932')


※cp932はutf-8やshift_jisでない日本語を読み込むマジックコード

【行の追加】
data_list = [['東京都','新宿',349385], ['東京都','品川',414581], ['北海道','札幌',1964894]]
col_list = ["pref", "city", "population"]
df1 = pd.DataFrame(data=data_list, columns=col_list )
df2 = pd.DataFrame(data = [['沖縄','那覇', 310007]], columns = col_list )
df = pd.concat([df1, df2], axis=0)
df


【列の追加】
df1["temperature"] = [18.5, 17.9, 9.2, 20.5]


※以降、ここで作成したデータを基に解説

【行指定での行削除】
df1 = df.copy()
df1.drop(2) #非破壊的
df1.drop(2, inplace = True) #破壊的
df1.drop([1, 2], inplace = True) #複数指定


【列名を指定して列削除】
df1.drop('pref', axis=1) #非破壊的
df1.drop('pref', inplace = True, axis=1) #破壊的
df1.drop(['pref', 'temperature'], inplace = True, axis=1) #複数指定



【カラムを指定してインデックスへ変更】
df1.set_index(‘city’,inplace=True)


【インデックスのリセット】
df1.reset_index(drop=True)



【リストから変更】
col_list = ['col1', 'col2', 'col3', 'col4']
df1.columns = col_list



【先頭行を確認】
df_sales.head(3) #行数を指定
df_sales.head() #行数の指定がない場合は5行がデフォルト>


【最後尾行を確認】
df_sales.tail(3) #行数を指定
df_sales.tail() #行数の指定がない場合は5行がデフォルト



【行番号・列番号を指定して抽出】
df.iloc[3:6] #行のみの指定
df.iloc[:, 1] #列のみの指定
df.iloc[1:3, 0:2] #行と列の指定


【行名・列名を指定して抽出】
df[['city','temperature']] #列の直接指定
df.loc[:,'city':'temperature'] #列範囲の指定


【条件を指定して行を抽出】
df[df['pref'] == '東京都']


【クエリライクに条件を指定して行を抽出】
df.query('pref == "東京都"')
df.query('population > 320000 and temperature < 18')




コメント