はじめに
PandasのDataFrameのひな形や、DataFrame間の結合などの基本をまとめる。
目次
- 空のDataFrameを作る
- DataFrameに列を追加する
- DataFrameを任意の値で初期化
- DataFrame間を結合する
- DataFrameから特定の列を抜き出す
- 欠損値NaNの初期化
- PandasのExcelCSV処理
空のDataFrameを作る
pandas_initial_sample.py
import pandas as pd
#空のデータフレーム
df = pd.DataFrame()
print(f'{df=}')
# df=Empty DataFrame
# Columns: []
# Index: []
DataFrameに列を追加する
pandas_initial_sample.py
import pandas as pd
#列を追加する
df = pd.DataFrame()
#NaNの列追加--------
df['A'] = []*5 #列名Aで空を5行追加
print(f'{df=}')
# df=Empty DataFrame
# Columns: [A]
# Index: []
#0の列追加----------
df['B'] = [0]*5 #列名Bで0を5行追加
print(f'{df=}')
# df= A B
# 0 NaN 0
# 1 NaN 0
# 2 NaN 0
# 3 NaN 0
# 4 NaN 0
DataFrameを任意の値で初期化
辞書型で値を入力すれば、DataFrameを初期化できる。
pandas_initial_sample.py
import pandas as pd
# 空初期化--------------------
df = pd.DataFrame(
{'A':[]*5
,'B':[]*5
,'C':[]*5})
print(f'{df=}')
# df=Empty DataFrame
# Columns: [A, B, C]
# Index: []
# 0初期化---------------------
df = pd.DataFrame(
{'A':[0]*5
,'B':[0]*5
,'C':[0]*5})
print(f'{df=}')
# df= A B C
# 0 0 0 0
# 1 0 0 0
# 2 0 0 0
# 3 0 0 0
# 4 0 0 0
# 任意の値で初期化--------------
df = pd.DataFrame(
{'a':[1,2,3,4,5]
,'b':[5,4,3,2,1]})
print(f'{df=}')
# df= a b
# 0 1 5
# 1 2 4
# 2 3 3
# 3 4 2
# 4 5 1
DataFrame間を結合する
pd.concat()
を使えば結合ができる。パラメータで結合方法を指定できる。
パラメータ | 内容 |
---|---|
axis | 列結合 axis=1 行結合 axis=0 |
ignore_index | 行結合の場合、indexを採番しなおす ignore_index=True |
- 列を結合する
pandas_initial_sample.py
import pandas as pd
df1 = pd.DataFrame(
{'A':[0]*5
,'B':[0]*5
,'C':[0]*5})
df2 = pd.DataFrame(
{'a':[1,2,3,4,5]
,'b':[5,4,3,2,1]})
# axis=1 で列結合
df = pd.concat([df1,df2],axis=1)
print(f'{df=}')
# df= A B C a b
# 0 0 0 0 1 5
# 1 0 0 0 2 4
# 2 0 0 0 3 3
# 3 0 0 0 4 2
# 4 0 0 0 5 1
- 行を結合する
pandas_initial_sample.py
import pandas as pd
df1 = pd.DataFrame(
{'A':[0]*5
,'B':[0]*5})
df2 = pd.DataFrame(
{'A':[1,2,3,4,5]
,'B':[5,4,3,2,1]})
# axis=1 で行結合
df = pd.concat([df1,df2],axis=0)
print(f'{df=}')
# df= A B
# 0 0 0
# 1 0 0
# 2 0 0
# 3 0 0
# 4 0 0
# 0 1 5
# 1 2 4
# 2 3 3
# 3 4 2
# 4 5 1
# axis=1 で行結合 ignore_index=True でindexを採番しなおす
df = pd.concat([df1,df2],axis=0,ignore_index=True)
# df= A B
# 0 0 0
# 1 0 0
# 2 0 0
# 3 0 0
# 4 0 0
# 5 1 5
# 6 2 4
# 7 3 3
# 8 4 2
# 9 5 1
DataFrameから特定の列を抜き出す
列名を指定して抜き出す
pandas_initial_sample.py
import pandas as pd
df = pd.DataFrame(
{'A':[0]*5
,'B':[1]*5
,'C':[2]*5})
# A,C列抜き出し
df_choice = df[['A', 'C']]
print(f'{df_choice=}')
# df_choice= A C
# 0 0 2
# 1 0 2
# 2 0 2
# 3 0 2
# 4 0 2
欠損値NaNの初期化
DataFrame結合時に行列サイズが異なると、欠損値NaNが発生する。欠損値はfillna()
で一括変換できる。
pandas_initial_sample.py
import pandas as pd
df1 = pd.DataFrame(
{'A':[0]*3
,'B':[0]*3})
df2 = pd.DataFrame(
{'C':[1]*5
,'D':[1]*5})
df = pd.concat([df1,df2],axis=1)
print(f'{df=}')
# df= A B C D
# 0 0.0 0.0 1 1
# 1 0.0 0.0 1 1
# 2 0.0 0.0 1 1
# 3 NaN NaN 1 1
# 4 NaN NaN 1 1
# NaN→0変換
df_fillna=df.fillna(0)
print(f'{df_fillna=}')
# df_fillna= A B C D
# 0 0.0 0.0 1 1
# 1 0.0 0.0 1 1
# 2 0.0 0.0 1 1
# 3 0.0 0.0 1 1
# 4 0.0 0.0 1 1
# NaN→'a'変換
df_fillna=df.fillna('a')
print(f'{df_fillna=}')
# df_fillna= A B C D
# 0 0.0 0.0 1 1
# 1 0.0 0.0 1 1
# 2 0.0 0.0 1 1
# 3 a a 1 1
# 4 a a 1 1
PandasのExcelCSV処理