pandasのリファレンス
pandasのDataFrameは、テーブル形式のデータ構造を持ちます。
備忘録として、以下に記載いたします。
※適宜編集していきます。追加希望の内容があれば編集要望をお願いいたします。
要素の抽出
ilocメソッドやlocメソッドで行と列の両方を指定すれば、 特定の要素ひとつを抽出することも可能です。
# 特定の要素を抽出
# ilocメソッドで[行のindex,列のindex]の順番に指定
df.iloc[1,0]
# 特定の要素を抽出
# locメソッドで[行のindex,列の名称]を順番に指定
df.loc[1,'名前']
行の追加
新たに行を追加したいときは、その行を表すDataFrameを生成し、concatメソッド(concatenate: 「結合する」 の意味)でDataFrameに追加をします。 結合したいDataFrameをリストに格納して渡し、行を追加したいときは引数axisを0に指定します。
2つのDataFrameに関して列数が一致している必要がありますので、注意してください。
# 追加したいDataFrameを定義
row = pd.DataFrame({'名前': ['渡辺'],
'年齢': [45],
'性別': '男'})
# 行の追加(行: axis=0, 列: axis=1)
df_2 = pd.concat([df,row], axis=0)
要約統計量(平均、標準偏差など)を取得
pandas.DataFrameおよびpandas.Seriesのメソッドdescribe()を使うと、各列ごとに平均や標準偏差、最大値、最小値、最頻値などの要約統計量を取得できる。
とりあえずデータの雰囲気をつかむのにとても便利。
- describe()の基本的な使い方
- 対象となる型を指定: 引数include, exclude
- 文字列など数値以外の列を指定
- すべての型の列を指定
- 任意の型を選択・除外
- describe()の項目の意味と対応する個別メソッド
- count: 要素の個数
- unique: ユニークな(一意な)値の要素の個数
- top: 最頻値(mode)
- freq: 最頻値の頻度(出現回数)
- mean: 算術平均
- std: 標準偏差
- min: 最小値
- max: 最大値
- 50%: 中央値(median)
- 25%, 75%: 1/4分位数、3/4分位数
- パーセンタイルの刻みを指定
- 数値列に対して頻度などを算出
- 数字の文字列に対して平均や標準偏差などを算出
- pandas.Seriesのdescribe()
- 日時(datetime64[ns]型)の場合
- 行に対してdescribe()を適用
import pandas as pd
df = pd.DataFrame({'a': [1, 2, 1, 3],
'b': [0.4, 1.1, 0.1, 0.8],
'c': ['X', 'Y', 'X', 'Z'],
'd': ['3', '5', '2', '1'],
'e': [True, True, False, True]})
print(df)
# a b c d e
# 0 1 0.4 X 3 True
# 1 2 1.1 Y 5 True
# 2 1 0.1 X 2 False
# 3 3 0.8 Z 1 True
print(df.describe())
# a b
# count 4.000000 4.000000
# mean 1.750000 0.600000
# std 0.957427 0.439697
# min 1.000000 0.100000
# 25% 1.000000 0.325000
# 50% 1.500000 0.600000
# 75% 2.250000 0.875000
# max 3.000000 1.100000
print(type(df.describe()))
# <class 'pandas.core.frame.DataFrame'>