Help us understand the problem. What is going on with this article?

pandasのDataFrameのデータ操作をよくわすれるので、よく使用する操作を自分のためにまとめた

More than 1 year has passed since last update.

おつかれさまです、かきうち(@kakistuter)です。
すぐ忘れちゃうので、pandasのDataFrameのデータ操作のかんたん早見表つくりました。

事前にimport

import pandas as pd
import numpy as np

データ読み取り編

CSVの読み取り

df = pd.read_csv("ファイル名", header=None)
# `header=None`を指定せず`pd.read_csv("ファイル名")`とした場合は1行目が自動的にカラム名として挿入される

コピーの読み取り

df = pd.read_clipboard(header=None)
# `header=None`を指定せず`pd.read_clipboard()`とした場合は1行目が自動的にカラム名として挿入される

DataFrameの自作

df = pd.DataFrame(np.arange(12).reshape(4,3),index=['行名1','行名2', '行名3', '行名4'], columns=['カラム名1','カラム名2', 'カラム名3'])
# `index=[]`や`column=[]`を指定しない場合は、順に1,2,3・・・となる
# データは`np.arange(12).reshape(4,3)`といった`array`であること

データ抽出編

全カラム名の取得

df.columns

最初の数データ取得

df.head(行数)

各種情報取得

df.describe()

1行の取得

df.loc['行名']
# 出力はSeries型
df.loc[['行名']]
df.iloc[2]
# 出力はSeries型
# カッコ内の数値は先頭を0とるす行番号
df.iloc[[2]]
# カッコ内の数値は先頭を0とるす行番号

複数行の取得

df.loc[['行名','行名']]
df.iloc[[2,3]]
# カッコ内の数値は先頭を0とるす行番号
df.iloc[2:4, :]
# カッコ内の数値はスライス形式で[行の開始位置:行の終了位置-1]

1カラムの取得

df['カラム名']
# 出力はSeries型
df[['カラム名']]
df.loc[:, ['カラム名']]
df.iloc[:, [1]]
# カッコ内の数値は先頭を0とるすカラム番号

複数カラムの取得

df[['カラム名','カラム名']]
df.loc[:, ['カラム名','カラム名']]
df.iloc[:, [1,2]]
# カッコ内の数値は先頭を0とるすカラム番号

1行1列ピンポイントで取得

df.loc['行名', 'カラム名']
# 出力は値のみ
df.loc['行名']['カラム名']
# 出力は値のみ
df.loc[['行名'], ['カラム名']]
df.iloc[2,1]
# 出力は値のみ
# カッコ内の数値は先頭を0とする[行番号,カラム番号]
df.iloc[[2], [1]]
# カッコ内の数値は先頭を0とする[[行番号],[カラム番号]]
df.at['行名', 'カラム名']
# 出力は値のみ
df.iat[2,1]
# 出力は値のみ
# カッコ内の数値は先頭を0とする[行番号,カラム番号]

複数行複数列を指定して取得

df.loc[['行名','行名'], ['カラム名','カラム名']]
df.iloc[[2,3], [1,2]]
# カッコ内の数値は先頭を0とする[[行番号,行番号], [カラム番号, カラム番号]]
df.iloc[2:4,1:3]
# カッコ内の数値はスライス形式で[行の開始位置:行の終了位置-1, カラムの開始位置:カラムの終了位置-1]

データ削除編

1行の削除

df.drop('行名')

複数行の削除

df.drop(['行名','行名'])

1カラムの削除

df.drop('カラム名', axis =1)

複数カラムの削除

df.drop(['カラム名','カラム名'], axis =1)

データ結合編

横方向に結合

pd.concat([df1, df2], axis =1)

データ変換編

arrayに変換

df.values

dframeに再変換

pd.DataFrame(df.values, index=['行名1','行名2', '行名3', '行名4'], columns=['カラム名1','カラム名2', 'カラム名3'])

csvに出力

df.to_csv("ファイル名.csv")

データ更新編

単一データの更新

データ取得して代入するのみ

複数データの一括更新

ただし代入される側とする側の行数、列数を合わせることは必須。
型もそろえた方が無難(型の違いによる意図しない行列入れ違いが発生するため)。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away