pandasまとめ
In [ ]:
import numpy as np
import pandas as pd
【【DataFrame作成編】】
・辞書
・リスト(4つのリストを合体、2次元リストから)
・Series型データ
・np.arrayデータ
上記の方法で↓のDataFrameを作ります。
A B C D
0 A1 B1 C1 D1
1 A2 B2 C2 D2
2 A3 B3 C3 D3
3 A4 B4 C4 D4
In [ ]:
#【dictから作る】
df1 = pd.DataFrame(data={
'A': ['A1', 'A2', 'A3', 'A4'],
'B': ['B1', 'B2', 'B3', 'B4'],
'C': ['C1', 'C2', 'C3', 'C4'],
'D': ['D1', 'D2', 'D3', 'D4'] } )
# indedxは自動設定 0,1,2,3--
print(df1)
df1.index = df1.index + 1 #index=に1を足す 1,2,3,4---
df1
A B C D 0 A1 B1 C1 D1 1 A2 B2 C2 D2 2 A3 B3 C3 D3 3 A4 B4 C4 D4
Out[ ]:
A | B | C | D | |
---|---|---|---|---|
1 | A1 | B1 | C1 | D1 |
2 | A2 | B2 | C2 | D2 |
3 | A3 | B3 | C3 | D3 |
4 | A4 | B4 | C4 | D4 |
In [ ]:
#【listで作る】
df2 = pd.DataFrame(
data=[
['A1', 'B1','C1','D1'],
['A2', 'B2','C2','D2'],
['A3', 'B3','C3','D3'],
['A4', 'B4','C4', 'D4']],
# indedx,columnsは最初に設定
columns=['A', 'B','C','D'],
index=[1,2,3,4]
)
df2
Out[ ]:
A | B | C | D | |
---|---|---|---|---|
1 | A1 | B1 | C1 | D1 |
2 | A2 | B2 | C2 | D2 |
3 | A3 | B3 | C3 | D3 |
4 | A4 | B4 | C4 | D4 |
In [ ]:
# 4つの【listから作る】
lst1 = ['A1', 'A2', 'A3', 'A4']
lst2 = ['B1', 'B2', 'B3', 'B4']
lst3 = ['C1', 'C2', 'C3', 'C4']
lst4 = ['D1', 'D2', 'D3', 'D4']
df21 = pd.DataFrame(list(zip(lst1,lst2,lst3,lst4)),
# indedx,columnsは最初に設定
columns = ['A','B','C','D'],
index=[1,2,3,4])
df21
Out[ ]:
A | B | C | D | |
---|---|---|---|---|
1 | A1 | B1 | C1 | D1 |
2 | A2 | B2 | C2 | D2 |
3 | A3 | B3 | C3 | D3 |
4 | A4 | B4 | C4 | D4 |
In [ ]:
# np.arrayでDF
df30 = pd.DataFrame(
data=np.array([ ['A1', 'B1','C1','D1'],
['A2', 'B2','C2','D2'],
['A3', 'B3','C3','D3'],
['A4', 'B4','C4','D4']])
)
print(df30)
# indexを設定
df30.index=[10,11,12,13]
# cplumnsを設定
df30.columns=['A', 'B','C','D']
print(df30)
# indexを書き換え
df30=df30.rename(index={10:'KK',12:'GG'})
# cplumnsを書き換え
df30=df30.rename(columns={'B':'BB'})
df30
0 1 2 3 0 A1 B1 C1 D1 1 A2 B2 C2 D2 2 A3 B3 C3 D3 3 A4 B4 C4 D4 A B C D 10 A1 B1 C1 D1 11 A2 B2 C2 D2 12 A3 B3 C3 D3 13 A4 B4 C4 D4
Out[ ]:
A | BB | C | D | |
---|---|---|---|---|
KK | A1 | B1 | C1 | D1 |
11 | A2 | B2 | C2 | D2 |
GG | A3 | B3 | C3 | D3 |
13 | A4 | B4 | C4 | D4 |
csvファイル書き出しと読み込み¶
In [ ]:
#csvで読み込むためファイルを保存、indexを付加しない
df30.to_csv('csv_data.csv')#index=False)
In [ ]:
#csvファイルを読み込む
df4=pd.read_csv('csv_data.csv',index_col=0)
df4
Out[ ]:
A | BB | C | D | |
---|---|---|---|---|
KK | A1 | B1 | C1 | D1 |
11 | A2 | B2 | C2 | D2 |
GG | A3 | B3 | C3 | D3 |
13 | A4 | B4 | C4 | D4 |
loc[] iloc[] を使った選択と置き換え¶
まずどんな方法でもいいのでDataFrameを作ります
In [ ]:
#【np.arrayの組み合わせで作る】
df3 = pd.DataFrame(
data=np.array([ ['A1', 'B1','C1','D1'],
['A2', 'B2','C2','D2'],
['A3', 'B3','C3','D3'],
['A4', 'B4','C4','D4']]),
columns=['A', 'B','C','D'],
index=[1,2,3,4]
)
df3
Out[ ]:
A | B | C | D | |
---|---|---|---|---|
1 | A1 | B1 | C1 | D1 |
2 | A2 | B2 | C2 | D2 |
3 | A3 | B3 | C3 | D3 |
4 | A4 | B4 | C4 | D4 |
In [ ]:
# データを確認
print(df3)
df3.index, df3.columns, df3.values
A B C D 1 A1 B1 C1 D1 2 A2 B2 C2 D2 3 A3 B3 C3 D3 4 A4 B4 C4 D4
Out[ ]:
(Int64Index([1, 2, 3, 4], dtype='int64'), Index(['A', 'B', 'C', 'D'], dtype='object'), array([['A1', 'B1', 'C1', 'D1'], ['A2', 'B2', 'C2', 'D2'], ['A3', 'B3', 'C3', 'D3'], ['A4', 'B4', 'C4', 'D4']], dtype=object))
In [ ]:
print(df3['B']) #Series型
print(df3[['B']]) #DataFrame型
1 B1 2 B2 3 B3 4 B4 Name: B, dtype: object B 1 B1 2 B2 3 B3 4 B4
indexをピンポイントで置き換え¶
In [ ]:
# index 全部書き換え
df3.index=['R0','R1','R2','R3']
de.loc[] で選択 df=df.loc[]で置き換え¶
[行,列]を行名、列名でスライス的選択
In [ ]:
#df.loc[行,列]
print(df3.loc['R2']) #行 R2
print(df3.loc['R1','B']) # 行 R1 の列 B =>B2
print(df3.loc['R1':'R2']) # 行 R1-R2
print(df3.loc['R0':'R2','B':'D'])# 行 R0-R2,列 B-D
A A3 B B3 C C3 D D3 Name: R2, dtype: object B2 A B C D R1 A2 B2 C2 D2 R2 A3 B3 C3 D3 B C D R0 B1 C1 D1 R1 B2 C2 D2 R2 B3 C3 D3
In [ ]:
print(df3)
# locで値の入れ替え
# df.loc[行,列]=value
print(df3.loc['R1','B']) # 行 R1 の列 B -> 10
df3.loc['R1','B']='MP'# 書き換えは = 値 とする
print(df3.loc['R1','B']) # 行 R1 の列 B =>B2
df3.loc[:,'D']=['XD1','XD2','XD3','XD4'] #行全部、列Dをリストで置き換える
print(df3)
A B C D R0 A1 B1 C1 D1 R1 A2 B2 C2 D2 R2 A3 B3 C3 D3 R3 A4 B4 C4 D4 B2 MP A B C D R0 A1 B1 C1 XD1 R1 A2 MP C2 XD2 R2 A3 B3 C3 XD3 R3 A4 B4 C4 XD4
iloc[]で選択、及び書き換え¶
[行,列]の数字によるスライスで選択
In [ ]:
print(df3)
# iloc(行,列)
print(df3.iloc[0,0])
print(df3.iloc[0:1,0:2])
# ilocでの書き換え
# iloc(行,列)=[[行方向],[行方向]]
df3.iloc[0:2,1:3]=[[1,2],[10,20]]
df3
A B C D R0 A1 B1 C1 XD1 R1 A2 MP C2 XD2 R2 A3 B3 C3 XD3 R3 A4 B4 C4 XD4 A1 A B R0 A1 B1
Out[ ]:
A | B | C | D | |
---|---|---|---|---|
R0 | A1 | 1 | 2 | XD1 |
R1 | A2 | 10 | 20 | XD2 |
R2 | A3 | B3 | C3 | XD3 |
R3 | A4 | B4 | C4 | XD4 |
[] list 形式を使った取得と置き換え¶
In [ ]:
df3[1:4] # 行 1,2,3
Out[ ]:
A | B | C | D | |
---|---|---|---|---|
R1 | A2 | 10 | 20 | XD2 |
R2 | A3 | B3 | C3 | XD3 |
R3 | A4 | B4 | C4 | XD4 |
In [ ]:
df3[['D','A','C']][1:4] #DF[[列、列、列]][行]
Out[ ]:
D | A | C | |
---|---|---|---|
R1 | XD2 | A2 | 20 |
R2 | XD3 | A3 | C3 |
R3 | XD4 | A4 | C4 |
In [ ]:
print(df3['C']==20) # 条件抽出 BOOL
df3[df3['C']==20] # Trueのデータを抽出
R0 False R1 True R2 False R3 False Name: C, dtype: bool
Out[ ]:
A | B | C | D | |
---|---|---|---|---|
R1 | A2 | 10 | 20 | XD2 |
pd.DataFrame.メソッドによる取得と置き換え¶
In [ ]:
df3
Out[ ]:
A | B | C | D | |
---|---|---|---|---|
R0 | A1 | 1 | 2 | XD1 |
R1 | A2 | 10 | 20 | XD2 |
R2 | A3 | B3 | C3 | XD3 |
R3 | A4 | B4 | C4 | XD4 |
In [ ]:
# get_locで 行番号列番号を取得
print(df3.index.get_loc('R2')) #R2の行番号を取得 -> 2
print(df3.columns.get_loc('D')) #Dの列番号を取得 -> 3
# locで行名とp列名から行番号列番号を取得して、ilocでそこの値を変更
df3.iloc[df3.index.get_loc('R2'),df3.columns.get_loc('D')]='V100'
df3
2 3
Out[ ]:
A | B | C | D | |
---|---|---|---|---|
R0 | A1 | 1 | 2 | XD1 |
R1 | A2 | 10 | 20 | XD2 |
R2 | A3 | B3 | C3 | V100 |
R3 | A4 | B4 | C4 | XD4 |
In [ ]:
df3.query('C==2') #列名は’ ”” で括らなくていい
Out[ ]:
A | B | C | D | |
---|---|---|---|---|
R0 | A1 | 1 | 2 | XD1 |
In [ ]:
df3.query("A=='A3'") # 命令文は ””で括る
Out[ ]:
A | B | C | D | |
---|---|---|---|---|
R2 | A3 | B3 | C3 | V100 |
# To add a new cell, type '# %%'
# To add a new markdown cell, type '# %% [markdown]'
# %% [markdown]
# pandasまとめ
# %%
import numpy as np
import pandas as pd
# %% [markdown]
# 【【DataFrame作成編】】
#
# ・辞書
# ・リスト(4つのリストを合体、2次元リストから)
# ・Series型データ
# ・np.arrayデータ
#
# 上記の方法で↓のDataFrameを作ります。
#
# A B C D
# 0 A1 B1 C1 D1
# 1 A2 B2 C2 D2
# 2 A3 B3 C3 D3
# 3 A4 B4 C4 D4
# %%
#【dictから作る】
df1 = pd.DataFrame(data={
'A': ['A1', 'A2', 'A3', 'A4'],
'B': ['B1', 'B2', 'B3', 'B4'],
'C': ['C1', 'C2', 'C3', 'C4'],
'D': ['D1', 'D2', 'D3', 'D4'] } )
# indedxは自動設定 0,1,2,3--
print(df1)
df1.index = df1.index + 1 #index=に1を足す 1,2,3,4---
df1
# %%
#【listで作る】
df2 = pd.DataFrame(
data=[
['A1', 'B1','C1','D1'],
['A2', 'B2','C2','D2'],
['A3', 'B3','C3','D3'],
['A4', 'B4','C4', 'D4']],
# indedx,columnsは最初に設定
columns=['A', 'B','C','D'],
index=[1,2,3,4]
)
df2
# %%
# 4つの【listから作る】
lst1 = ['A1', 'A2', 'A3', 'A4']
lst2 = ['B1', 'B2', 'B3', 'B4']
lst3 = ['C1', 'C2', 'C3', 'C4']
lst4 = ['D1', 'D2', 'D3', 'D4']
df21 = pd.DataFrame(list(zip(lst1,lst2,lst3,lst4)),
# indedx,columnsは最初に設定
columns = ['A','B','C','D'],
index=[1,2,3,4])
df21
# %%
# np.arrayでDF
df30 = pd.DataFrame(
data=np.array([ ['A1', 'B1','C1','D1'],
['A2', 'B2','C2','D2'],
['A3', 'B3','C3','D3'],
['A4', 'B4','C4','D4']])
)
print(df30)
# indexを設定
df30.index=[10,11,12,13]
# cplumnsを設定
df30.columns=['A', 'B','C','D']
print(df30)
# indexを書き換え
df30=df30.rename(index={10:'KK',12:'GG'})
# cplumnsを書き換え
df30=df30.rename(columns={'B':'BB'})
df30
# %% [markdown]
# ### csvファイル書き出しと読み込み
# %%
#csvで読み込むためファイルを保存、indexを付加しない
df30.to_csv('csv_data.csv')#index=False)
# %%
#csvファイルを読み込む
df4=pd.read_csv('csv_data.csv',index_col=0)
df4
# %% [markdown]
# ## loc[] iloc[] を使った選択と置き換え
# まずどんな方法でもいいのでDataFrameを作ります
# %%
#【np.arrayの組み合わせで作る】
df3 = pd.DataFrame(
data=np.array([ ['A1', 'B1','C1','D1'],
['A2', 'B2','C2','D2'],
['A3', 'B3','C3','D3'],
['A4', 'B4','C4','D4']]),
columns=['A', 'B','C','D'],
index=[1,2,3,4]
)
df3
# %%
# データを確認
print(df3)
df3.index, df3.columns, df3.values
# %%
print(df3['B']) #Series型
print(df3[['B']]) #DataFrame型
# %% [markdown]
# ### indexをピンポイントで置き換え
#
# %%
# index 全部書き換え
df3.index=['R0','R1','R2','R3']
# %% [markdown]
# ### de.loc[] で選択 df=df.loc[]で置き換え
# [行,列]を行名、列名でスライス的選択
# %%
#df.loc[行,列]
print(df3.loc['R2']) #行 R2
print(df3.loc['R1','B']) # 行 R1 の列 B =>B2
print(df3.loc['R1':'R2']) # 行 R1-R2
print(df3.loc['R0':'R2','B':'D'])# 行 R0-R2,列 B-D
# %%
print(df3)
# locで値の入れ替え
# df.loc[行,列]=value
print(df3.loc['R1','B']) # 行 R1 の列 B -> 10
df3.loc['R1','B']='MP'# 書き換えは = 値 とする
print(df3.loc['R1','B']) # 行 R1 の列 B =>B2
df3.loc[:,'D']=['XD1','XD2','XD3','XD4'] #行全部、列Dをリストで置き換える
print(df3)
# %% [markdown]
# ### iloc[]で選択、及び書き換え
# [行,列]の数字によるスライスで選択
# %%
print(df3)
# iloc(行,列)
print(df3.iloc[0,0])
print(df3.iloc[0:1,0:2])
# ilocでの書き換え
# iloc(行,列)=[[行方向],[行方向]]
df3.iloc[0:2,1:3]=[[1,2],[10,20]]
df3
# %% [markdown]
# ### [] list 形式を使った取得と置き換え
# %%
df3[1:4] # 行 1,2,3
# %%
df3[['D','A','C']][1:4] #DF[[列、列、列]][行]
# %%
print(df3['C']==20) # 条件抽出 BOOL
df3[df3['C']==20] # Trueのデータを抽出
# %% [markdown]
# ## pd.DataFrame.メソッドによる取得と置き換え
# %%
df3
# %%
# get_locで 行番号列番号を取得
print(df3.index.get_loc('R2')) #R2の行番号を取得 -> 2
print(df3.columns.get_loc('D')) #Dの列番号を取得 -> 3
# locで行名とp列名から行番号列番号を取得して、ilocでそこの値を変更
df3.iloc[df3.index.get_loc('R2'),df3.columns.get_loc('D')]='V100'
df3
# %%
df3.query('C==2') #列名は’ ”” で括らなくていい
# %%
df3.query("A=='A3'") # 命令文は ””で括る
コメント