python pandas 初歩的な操作
pandas 集計処理の基本的な操作について
■時系列の変換について カテゴリ型は、数値型に次いでよく使う型。pythonではastype関数はデータ型を変換する関数。
import numpy as np import pandas as pd
index | ID | 日 | 時 | セッション | 閲覧時間 |
---|---|---|---|---|---|
0 | 328667572 | 31 | 16 | 38 | 5 |
1 | 70373573 | 24 | 23 | 37 | 7 |
2 | 1839656582 | 12 | 20 | 28 | 6 |
4 | 1471882803 | 10 | 22 | 22 | 7 |
5 | 302325623 | 20 | 8 | 22 | 2 |
↓大枠の統計データを確認。
sample.describe()
index | ID | 日 | 時 | セッション | |
---|---|---|---|---|---|
count | 8.26E+05 | 8.26E+05 | 825940 | 825940 | 825940 |
mean | 9.64E+05 | 1.07E+09 | 15.530048 | 14.194003 | 1.11723 |
std | 5.91E+05 | 6.19E+08 | 8.595405 | 6.744024 | 0.516393 |
min | 0.00E+00 | 9.46E+03 | 1 | 0 | 1 |
25% | 4.46E+05 | 5.37E+08 | 8 | 10 | 1 |
50% | 9.63E+05 | 1.07E+09 | 16 | 15 | 1 |
75% | 1.48E+06 | 1.61E+09 | 23 | 20 | 1 |
max | 1.99E+06 | 2.15E+09 | 31 | 23 | 38 |
↓【欠損値】欠損値の有無確認
sample.isnull().any()
index False ID False 日 False 時 False セッション False 閲覧時間 False dtype: bool
↓【欠損値】欠損値の合計確認
sample.isnull().sum()
↓カラムのユニーク数をカウント
sample["ID"].nunique()
254008
↓列行カウント
sample.shape
(825940, 6)
↓列カウント
len(sample)
825940
↓要素数全てをカウント
sample.size
4955640
↓時を含むカラムを表示
sample.filter(regex ="時")
時 | 閲覧時間 | |
---|---|---|
0 | 16 | 5 |
1 | 23 | 7 |
2 | 20 | 6 |
3 | 22 | 7 |
4 | 8 | 2 |
型の一括変換
ff2.astype({'カラム名': int, 'カラム名1': int, 'カラム名2': int, 'カラム名3': int})
カラムの指定
sample.iloc[:,[0,1,2]]
■相関係数 corr()は各列の間の相関係数の算出が可能 methodで相関係数の算出方法を指定可能。
'pearson': ピアソンの積率相関係数(デフォルト) 'kendall': ケンドールの順位相関係数 'spearman': スピアマンの順位相関係数
python pandas 集計処理(時系列)
pandas 集計処理(時系列の関数)について
■時系列の変換について カテゴリ型は、数値型に次いでよく使う型。pythonではastype関数はデータ型を変換する関数。
import numpy as np import pandas as pd
ID | time | セッション |
---|---|---|
328667572 | 20180331 | 38 |
70373573 | 20180324 | 37 |
1839656582 | 20180312 | 28 |
1471882803 | 20180310 | 22 |
302325623 | 20180320 | 22 |
↓IDごとにtimeをグループ化
tii = k.groupby('ID')['time'].apply(list)
ID | time |
---|---|
9460 | [2018-03-14 15:00:00, 2018-03-25 20:00:00] |
72625 | [2018-03-15 21:00:00, 2018-03-13 20:00:00] |
85657 | [2018-03-13 14:00:00, 2018-03-09 19:00:00, 201... |
86703 | [2018-03-15 00:00:00, 2018-03-15 03:00:00] |
106015 | [2018-03-28 00:00:00, 2018-03-14 18:00:00, 201... |
↓Seriesを使ってtime要素を列方向に追加。
bb["time"].apply(pd.Series)
ID | 0 | 1 |
---|---|---|
9460 | 2018/3/14 15:00 | 2018/3/25 20:00 |
72625 | 2018/3/15 21:00 | 2018/3/13 20:00 |
85657 | 2018/3/13 14:00 | 2018/3/9 19:00 |
86703 | 2018/3/15 0:00 | 2018/3/15 3:00 |
106015 | 2018/3/28 0:00 | 2018/3/14 18:00 |
↓0と1のカラムの差分jisaを抽出。
sample2["jisa"]=(sample2[0]-sample2[1]).astype("timedelta64[D]")
ID | 0 | 1 | jisa |
---|---|---|---|
9460 | 2018/3/14 15:00 | 2018/3/25 20:00 | -12 |
72625 | 2018/3/15 21:00 | 2018/3/13 20:00 | 2 |
85657 | 2018/3/13 14:00 | 2018/3/9 19:00 | 3 |
86703 | 2018/3/15 0:00 | 2018/3/15 3:00 | -1 |
106015 | 2018/3/28 0:00 | 2018/3/14 18:00 | 13 |
↓カラム1にある要素を曜日として抽出。
sample2["youbi"]=sample2[1].dt.dayofweek
ID | 1 | youbi |
---|---|---|
9460 | 2018/3/14 15:00 | 2 |
72625 | 2018/3/15 21:00 | 3 |
85657 | 2018/3/13 14:00 | 1 |
86703 | 2018/3/15 0:00 | 3 |
106015 | 2018/3/28 0:00 | 2 |
111931 | 2018/3/7 9:00 | 2 |