仕事上、早々にを使えるようにしないといけないため、
を基に学んでいく。
4. pandas入門
は多くのコーディング用法をから採用しているが、テーブル形式のデータや不均一なデータを扱うために設計されている。
4.1 pandasのデータ構造
を始めるには、まずシリーズ()とデータフレーム()に慣れる必要がある。
4.1.1 シリーズ(series)
シリーズ()は1次元の配列のようなオブジェクトである。
################## ### pandas入門 ### ################## import numpy as np import pandas as pd from pandas import Series, DataFrame print('***Seriesの生成***') # Seriesの生成 obj = pd.Series([4, 7, -5, 3]) print(obj) # values, index属性で値、インデックスにアクセスする obj_values = obj.values obj_idx = obj.index print(obj_values) print(obj_idx) # インデックス付きSeriesの生成 print('') print('***Seriesへのアクセス***') obj2 = pd.Series([4, 7, -5, 3], index = ['d','b','a','c']) print(obj2) obj2_idx = obj2.index print(obj2_idx) # 部分配列へのアクセス print('') print('***部分配列へのアクセス***') print(obj2['a']) # インデックスラベルの指定でアクセス可能 obj2['d'] = 6 # 配列成分の書き換え print(obj2['d']) obj2[['c','a','b']] # リストで複数成分にアクセス可 # 条件指定によるフィルタリング print('') print('***条件指定によるフィルタリング***') print(obj2[obj2 > 0]) print(obj2 * 2) print(np.exp(obj2)) # シリーズは、インデックスと値がマッピングされた固定長の順序付き辞書型と見なすこともできる print('') print('***インデックスへのアクセス***') print('b' in obj2) # bというインデックスが存在するか print('e' in obj2)
########################## ### SeriesとDictの関係 ### ########################## import pandas as pd from pandas import Series, DataFrame # 辞書からSeriesの生成 print('***辞書からSeriesの生成***') sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000} obj3 = pd.Series(sdata) print(obj3.values) print(obj3.index) # インデックスの上書き states = ['California', 'Ohio','Oregon', 'Texas'] obj4 = pd.Series(sdata, index = states) print(obj4) # 欠損値へのアクセス print('') print('*欠損・NAがあるかどうか:') print(pd.isnull(obj4)) print('') print('*欠損・NAで無い値があるかどうか') print(pd.notnull(obj4)) print('') print('*インスタンスメソッド(obj4.isnull())としても取得可') print(obj4.notnull()) # 異なるSeriesに対して算術演算を施すと、自動的にインデックスを揃えてくれる print(obj3) print(obj4) print(obj3 + obj4) # name属性へのアクセス print('') print('name属性へのアクセス') obj4.name = 'population' obj4.index.name = 'state' print(obj4)