.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

Pandas(パンダス)は数表の形式で保存されたデータを効率的に処理する機能を収録したライブラリ

操作するためのデータ構造と演算を提供
Pythonから簡単に利用できるSQLの代替)

詳細

準備

インストール

>pip install pandas

インポート

>>>import pandas as pd

Series

DataFrame

ファースト・ステップ(Series)

Series型は、一次元の配列のオブジェクト

生成

配列から

>>>pd.Series([3,7,10,13])
0     3
1     7
2    10
3    13
dtype: int64

NumPyから

NumPyの配列から

>>>numpy_array = np.array([3,7,10,13])
>>>pd.Series(numpy_array)
0     3
1     7
2    10
3    13
dtype: int64

コピー

>>>ss=pd.Series([3,7,10,13])

アクセス

>>>x=pd.Series([3,7,10,13])

インデックス

>>>x[1]
7

抽出

※ インデックスにtrue, falseのSeriesが指定され抽出される。

配列

配列の取り出し

>>>x.values
array([ 3,  7, 10, 13], dtype=int64)

セカンド・ステップ(DataFrame1)

DataFrame?型は、テーブル形式のデータ構造

生成

辞書型から

>>> pd.DataFrame({
...      'xxx': ['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff'], # 長さ: 6
...      'yyy': [20, 34, 50, 12, 62, 22], # 長さ: 6
...      'zzz':['AAA', 'BBB', 'CCC', 'DDD', 'EEE', 'FFF'] # 長さ: 6
... })
  xxx  yyy  zzz
0  aaa   20  AAA
1  bbb   34  BBB
2  ccc   50  CCC
3  ddd   12  DDD
4  eee   62  EEE
5  fff   22  FFF

NumPyから

NumPyの行列(2次配列)から → NP ⇔ DF型変換

CSVから

>>>df = pd.read_csv('hoge.csv')

Excelから

コピー

>>> df=pd.DataFrame({
...      'xxx': ['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff'], # 長さ: 6
...      'yyy': [20, 34, 50, 12, 62, 22], # 長さ: 6
...      'zzz':['AAA', 'BBB', 'CCC', 'DDD', 'EEE', 'FFF'] # 長さ: 6
... })

確認

先頭・後尾

アクセス

>>> df=pd.DataFrame({
...     'xxx': ['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff'], # 長さ: 6
...     'yyy': [20, 34, 50, 12, 62, 22], # 長さ: 6
...     'zzz':['AAA', 'BBB', 'CCC', 'DDD', 'EEE', 'FFF'] # 長さ: 6
... })
>>> df
   xxx  yyy  zzz
0  aaa   20  AAA
1  bbb   34  BBB
2  ccc   50  CCC
3  ddd   12  DDD
4  eee   62  EEE
5  fff   22  FFF

先頭・後尾

インデックス

抽出

※ インデックスにname=yyyのtrue, falseのSeriesが指定され抽出される。

行列

m行n列の二次元行列が取得できる。

>>>df.values

行指定(≒ 選択)

列指定(≒ 射影)

編集

行追加

列追加

行削除

>>>df=df.drop(2,axis=0)
>>> df
   xxx  yyy  zzz XXX YYY
0  aaa   20  AAA  X1  Y1
1  bbb   34  BBB  X2  Y2
3  ddd   12  DDD  X4  Y4
4  eee   62  EEE  X5  Y5
5  fff   22  FFF  X6  Y6

列削除

>>>df=df.drop('yyy',axis=1)
>>>df
   xxx  zzz XXX YYY
0  aaa  AAA  X1  Y1
1  bbb  BBB  X2  Y2
3  ddd  DDD  X4  Y4
4  eee  EEE  X5  Y5
5  fff  FFF  X6  Y6

列名・行名の変更

列値の一括変更

列値を%に単位変更する(100倍する)などの一括変更。

>>>pd.DataFrame({
...      'xxx': ['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff'], # 長さ: 6
...      'yyy': [20, 34, 50, 12, 62, 22], # 長さ: 6
...      'zzz':['AAA', 'BBB', 'CCC', 'DDD', 'EEE', 'FFF'] # 長さ: 6
... })
>>>df.iloc[:,1:2] = df.iloc[:,1:2] * 100
   xxx   yyy  zzz
0  aaa  2000  AAA
1  bbb  3400  BBB
2  ccc  5000  CCC
3  ddd  1200  DDD
4  eee  6200  EEE
5  fff  2200  FFF
6  ggg  4500  GGG

行列の入替(転置)

df=df.transpose()

inplace=True

inplace=Trueを設定すると、元を変更する。

>>>df.drop('yyy',axis=1,inplace=True)
>>>df

※ drop、rename、dropnaなどメソッドに指定できる。

サード・ステップ(DataFrame2)

型変換

SS ⇔ DF型変換

NP ⇔ DF型変換

集計操作

>>>df=pd.DataFrame({
...    '0': ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09'], # 長さ: 10
...    '1': ['10', '11', '12', '13', '14', '15', '16', '17', '18', '19'], # 長さ: 10
...    '2': ['20', '21', '22', '23', '24', '25', '26', '27', '28', '29'] # 長さ: 10
})
>>>df=df.astype('int')

行方向に集系

列方向に集計

4thステップ(DataFrame3)

補完処理

基本的な補完処理はコチラ

Xを含む要素を一括置換

グループの平均値で補完

>>>df['補完対象列名'] = df.groupby('グループ化列名')['補完対象列名'].transform(lambda d: d.fillna(d.mean()))

特徴量エンジニアリング

基本統計量

相関係数行列

>>>df.corr()

※ 可視化する方法はコチラ

DataFrame?で標準化

>>>X = (df.iloc[:, m:n] - df.iloc[:, m:n].mean()) / df.iloc[:, m:n].std()
>>>X.describe()

※ 平均が ≒ 0、標準偏差 ≒ 1 になればOK。

One-Hotエンコーディング

参考


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS