Python – 4-1. pandas(DataFrame)
pandas(DataFrame)
1. 初期化
import pandas as pd
空のDataFrameを作成
df = pd.DataFrame() ==> Empty DataFrame ==> Columns: [] ==> Index: []
初期値を持ったDataFrameを作成
df = pd.DataFrame([['a', 'b', 'c'], [10,20,30]]) ==> 0 1 2 ==> 0 a b c ==> 1 10 20 30
初期値と列名・行名を持ったDataFrameを作成
df = pd.DataFrame([['a', 10], ['b', 20], ['c', 30]], columns=['key', 'val'], index=['A','B','C']) ==> key val ==> A a 10 ==> B b 20 ==> C c 30
numpy配列からDataFrameを作成
DataFrameの内部構造はnumpy配列そのものなので、特に変換処理は必要無い。
import numpy as np a=np.arange(6).reshape(3,2) df = df=pd.DataFrame(a, columns=['key','val']) ==> key val ==> 0 0 1 ==> 1 2 3 ==> 2 4 5
2. pandasのデータ構造
df = pd.DataFrame([['a', 10], ['b', 20], ['c', 30], ['d', 40], ['e', 50], ['f', 60]])
列名・行名の定義
df.columns = ['key', 'val'] df.index = ['A', 'B', 'C', 'D', 'E', 'F'] df.loc['A', 'key'] ==> key val ==> A a 10 ==> B b 20 ==> C c 30 ==> D d 40 ==> E e 50 ==> F f 60
列名・行名の変更(rename)
df = df.rename(columns={'key': 'label'}) df = df.rename(index={'A': 'A01', 'B': 'A02'}) df.rename(index={'C': 'A03', 'D': 'A04'}, inplace=True) ==> label val ==> A01 a 10 ==> A02 b 20 ==> A03 c 30 ==> A04 d 40 ==> E e 50 ==> F f 60
3. 要素数、行数、列数、行/列数の取得
全要素数
>>> df.size 12
行数
>>> len(df) 6
列数
>>> len(df.columns) 2
行/列数
>>> df.shape (6, 2)
DataFrameの情報
>>> df.info() <class 'pandas.core.frame.DataFrame'> Index: 6 entries, A01 to F Data columns (total 2 columns): label 6 non-null object val 6 non-null int64 dtypes: int64(1), object(1) memory usage: 96.0+ bytes ※ 諸々の情報を出力(値としては取得できない)
インデックス番号の取得(get_loc)
df.index.get_loc('A01') ==> 0 df.columns.get_loc('val') ==> 1
列名にプレフィックス、サフィックスを追加
※既存名の一括修正に使用 df = df.add_prefix('X_') ==> X_label X_val ==> A01 a 10 ==> A02 b 20 : 後略 df = df.add_suffix('_X') ==> X_label_X X_val_X ==> A01 a 10 ==> A02 b 20 : 後略 ※行名には使用できない
4. データ型
データ型の確認
df = pd.DataFrame([['a', 10], ['b', 20], ['c', 30], ['d', 40], ['e', 50], ['f', 60]], columns = ['key', 'val']) df.dtypes ==> key object ==> val int64 ==> dtype: object
列毎のデータ型確認
print(df['key'].dtype) ==> object print(df['val'].dtype) ==> int64
データ型の変更
float64に変更
df['val'].astype('float64') ==> 0 10.0 ==> 1 20.0 ==> 2 30.0 ==> 3 40.0 ==> 4 50.0 ==> 5 60.0 ==> Name: val, dtype: float64
int64に戻す
df['val'].astype('int64') ==> 0 10 ==> 1 20 ==> 2 30 ==> 3 40 ==> 4 50 ==> 5 60 ==> Name: val, dtype: int64
小数点以下の数値で演算すると自動的にデータ型が変わる
df['val']=df['val']*1.2 ==> print(df['val'].dtype) ==> float64
文字列型への変換
文字列型への変換はstrを指定する
df['val'].astype(str) df['val']=df['val'].astype(str)+'AAA'
※ object型を指定しても、文字列型にはならない
df['val']=df['val'].astype(object)+'AAA' ==> TypeError: unsupported operand type(s) for +: 'float' and 'str' print(df['val'].dtype) ==> object
最近のコメント