概要
データの読み込みから,簡単な統計量の算出.
- python3
- pandas
データの読み込み
import pandas as pd
# csvの場合
data = pd.read_csv('test.csv')
# excelの場合
data = pd.read_excel('test.xlsx')
データ連結(ユニオン・ジョイン)
- ユニオン:行を追加するイメージ.
id | 氏名 | 数学 | 英語 |
---|---|---|---|
1 | A | 80 | 40 |
2 | B | 66 | 50 |
3 | C | 70 | 00 |
id | 氏名 | 数学 | 英語 |
---|---|---|---|
1 | D | 100 | 100 |
2 | E | 69 | 30 |
union_data = pd.concat([table1, table2], ignore_index=True)
ignore_index=trueにより,Index(id)を再度振り直してくれる.
table2の属性が足りない場合は,nullがセットされる.
- ジョイン:列を追加するイメージ.
id | 氏名 | 数学 | 英語 |
---|---|---|---|
1 | A | 80 | 40 |
2 | B | 66 | 50 |
3 | C | 70 | 00 |
id | 氏名 | 年齢 | 出身 |
---|---|---|---|
1 | A | 20 | 北海道 |
2 | B | 21 | 沖縄 |
3 | C | 20 | 京都 |
join_data = pd.merge(table1,table2[['年齢','出身']], on='id', how='left')
table2の一部をジョインする場合は配列で指定する.
onは,ジョイン時に両テーブルを結びつけるところ.
howは突合方法(説明すると長いから別途記事書く必要ありそう)
ジョインするテーブルて列名が異なる場合は以下のように指定する
join_data = pd.merge(table1,table2, left_on='id', right_on='item_id' how='left')
各種統計量の計算
test.py
# 各行の統計量(平均・標準偏差等)
data.describe()
# 欠損値(nullとか)の簡単な確認
# 各カラムのtrue・falseを表示
data.isnull()
# 各列のisnullの数を表示
data.isnull().sum()
データの一部抽出
特例の年月のデータの合計とかが知りたい時には、groupbyを利用
as_indexをTrueにするとグループラベルがIndexになる。
join_data.groupby(['まとめる列名'], as_index=False).sum()
一部抜粋して別テーブルの作成
fill_value=0にすることで、NaNのカラムを0にしてくれる
aggfuncは他に, max, minの値も取得できる
# 任意の行・列の出現回数だけ求める場合
byState = pd.pivot_table(data, index='行になる値', columns='列になる値', aggfunc='size', fill_value=0)
# 任意の行・列の合計値を求める場合
byState = pd.pivot_table(data, index='行になる値', columns='列になる値', values='合計する値' aggfunc='sum', fill_value=0)