0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Pandasのデータ操作まとめ

Last updated at Posted at 2021-10-24

header002.jpg

読み込み・保存・書き出し

CSVファイルの読み込み

df = pd.read_csv('パス')

CSVファイルの書き出し

pd.Series(y, name='pred').to_csv('submission.csv', index=None)

pickleファイルへ保存

pd.to_pickle(forest, 'ファイル名.pkl')

PandasのDataFrameに変換

df = pd.DataFrame(x,columns = coulumns)

表示する

df.shape #行・列の数
df.type() #データの型
df.info() #データ数と型
df.nunique() #ユニークな値の数
df.isnull().sum() #欠損値の数
df.head() #上から5行表示
df.tail() #下から5行表示
df.describe() #要約統計量の確認
df.describe(include='all') #文字列も含めて確認
df.index #行名
df.coulumns #列名

相関関係を確認

df_corr
df_corr[df_corr > 0.99] #0.99以上を表示、それ以外をNan

切り出す

df.iloc[:, 0] #全ての行の0列目
df.iloc[:, 1:] #全ての行の1列目〜最後の列まで
df.loc[:, 'SAMPLE'] #全ての行の'SAMPLE'列
df.loc[:,['SAMPLE1', 'SAMPLE2']] #全ての行の'SAMPLE1'列と'SAMPLE2'列

条件付きでデータを切り出す

df['name'].str.contains('li') #name列の文字列liを含む要素をTrueにする
df.filter(like='apple', axis=0) #行名・列名が部分一致する行・列を抽出: 引数like

条件付きでデータを切り出す(比較演算子①)

df > 0 #0より大きければTrue
df[df > 0] #Trueのところだけ値が残り、FalseはNan(欠損値)になる
df['C'] > 0 #C1列の0より大きいデータをTrue
df[df['C']] > 0 #C1列の0より大きいデータの全体の行だけ表示

条件付きでデータを切り出す(比較演算子②)

df[df['Origin'] == 3].head() #'Origin'が3
df[(df['Origin'] == 3) & (df['Weight'] >= 2000)].head() #'Origin'が3で'Weight'が2000以上
df[(df['Origin'] != 1) | (df['Weight'] > 3000)].sort_values('MPG').head() #'Origin'が1ではない、もしくは'Weight'が3000より大きいデータを'MPG'が小さい順に表示
df['Class'][df['Class'] == 0.0].shape #Class列の0.0の行を表示

並べ替え

df.sort_value('Weight').head() #'Weight'が小さい順 
df.sort_value('Weight', ascending = False).head() #'Weight'が大きい順

追加・削除

df['Origin'] = origin # Origin列を作成し、originを代入
# 注意:データフレームの行数と新しく入れる行数が同じことが条件
df = df.drop(labels='Origin', axis=1) # 'Origin'の列方向を削除

置き換え

df['A'].replace('M', 1) #A列のMを1に置き換え

欠損値の処理

dropna:欠損しているデータを削除

df.dropna() #欠損値がある行を全て削除
df['C2'].dropna() #C2列の欠損値がある行を削除
df.dropna(thresh = 3) #3つ欠損値がある行を全て削除

fillna:欠損値を別の値で埋める

df['C2'].fillna(df['C2'].mean()) #C2列の欠損値をC2の平均値で埋める

カテゴリカルなデータ

df['C1'].value.counts() #カテゴリとデータの数を確認
df[df['C1'] == 'A'] #特定のカテゴリのデータだけを取り出す
df_obj = df.select_dtypes(include='object') #カテゴリカル変数を含んだデータのみを抽出

平均値でグループ化

df.group('Origin').mean

クロス集計

pd.crosstab(df['Cylimders'], df['Origin'])

ピポッドテーブル

pd.pivot_table(df, value='MPG', index='Model Year', columns='Origin', aggfunc='mena')

おまけ

統計量の表記の意味

  • count:値の数

  • mean:平均値

  • std:標準偏差

  • min:最小値

  • 25%:第一四分位数

  • 50%:第二四分位数(中央値)

  • 75%:第三四分位数

  • max:最大値


参考リンク
Pandasのメソッド一覧
pandasで特定の文字列を含む行を抽出(完全一致、部分一致)
条件を満たす行名・列名の行・列を抽出(選択)
【初心者向け】データ分析で必須のPandasを入門しよう!
並べ替え

0
1
0

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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?