python_analytics

主にpythonやライブラリーを使ったデータ解析、機械学習、統計学などについて書いていきます

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