#author("2018-11-01T23:07:10+00:00","","") [[Python]] > * pandas入門 [#y658b3b9] #setlinebreak(on); #contents -- 参考 --- https://pandas.pydata.org/pandas-docs/version/0.23.4/generated/pandas.Series.html --- https://deepage.net/features/pandas-series.html -- 関連 --- [[Python]] --- [[Python覚え書き]] // https://deepage.net/features/pandas-series.html // https://deepage.net/features/pandas-dataframe.html // https://deepage.net/features/pandas-numpy.html ** pandasとは [#f2c87a29] #html(<div style="padding-left:10px;">) Pandas は Pythonのデータ解析用のライブラリ。 CSVやテキストファイルなど様々なフォーマットの1次元、2次元データを扱う事ができ、 基本的な各種データ操作(読込、追加、更新、削除)はもちろん、集計、グループ化、時系列データ操作などの様々な機能がある。 #html(</div>) ** pandas と numpy [#lc680a3a] #html(<div style="padding-left:10px;">) numpy は主に多次元配列の数値データを扱う事に特化したライブラリ。 数値データ以外を殆ど扱えない代わりに高速に動作する。 pandas は 内部で numpy を利用しつつ使いやすくしたもの。 pandas では抽象化や関数ラップによって、様々な演算を利用しやすくなっているが、素の numpy を使用した方が数値演算は高速に行う事ができる。 #html(</div>) ** インストール [#x9fa32ea] #html(<div style="padding-left:10px;">) 普通に pip install するだけ。 #myterm2(){{ pip install pandas }} ※numpy などの他に必要なライブラリもインストールされる。 #html(</div>) ** 1次元データの操作 [#df8c38f8] #html(<div style="padding-left:10px;">) 1次元データの操作は pandas の最も基本的なオブジェクトである Series を利用する。 ※以下では記載しないが numpy の ndarray から作成する事も出来る。 *** リストからSeries を作成する。 [#yebbdb7a] #html(<div style="padding-left:10px;">) #mycode2(){{ import pandas as pd series = pd.Series([1,2,3,4,5]) print(series) }} 結果 #myterm2(){{ 0 1 1 2 2 3 3 4 4 5 dtype: int64 }} インデックスに連番以外を指定する事も可能 #mycode2(){{ import pandas as pd series = pd.Series([1,2,3,4,5], index=['one','two','three','four','five']) print(series) }} 結果 #myterm2(){{ one 1 two 2 three 3 four 4 five 5 dtype: int64 }} 後からインデックスを指定する事も可能 #mycode2(){{ import pandas as pd series = pd.Series([1,2,3,4,5]) series.index = ['one','two','three','four','five'] print(series) }} 結果 #myterm2(){{ one 1 two 2 three 3 four 4 five 5 dtype: int64 }} #html(</div>) *** 辞書からSeries を作成する。 [#i71803b9] #html(<div style="padding-left:10px;">) 検索エンジンのシェアを格納した dict を Series化してみる。 http://gs.statcounter.com/search-engine-market-share #mycode2(){{ import pandas as pd # 辞書から作成 series = pd.Series({"google": 92.31, "yahoo": 2.51, "bing": 2.27}) print(series) }} 結果 #myterm2(){{ google 92.31 yahoo 2.51 bing 2.27 dtype: float64 }} #html(</div>) *** Seriesで提供される属性とメソッド [#ue306291] #html(<div style="padding-left:10px;">) めちゃくちゃいっぱいある。 https://pandas.pydata.org/pandas-docs/version/0.23.4/generated/pandas.Series.html #mycode2(){{ series = pd.Series([1,2,3,4,5,4,6,1,3,4]) print(series.size) # サイズ print(series.values) # 値のリスト print(series.sum()) # 合計値 print(series.mean()) # 平均値 print(series.gt(2)) # 2より大きいもの print(series.head(2)) # 先頭の2つ print(series.max()) # 最大値 print(series.to_json()) # jsonに変換 print(series.filter(regex="3")) # 添字の正規表現 print(series.drop_duplicates()) # 重複排除 }} #html(</div>) #html(</div>) ** 2次元データの操作 [#n193eef1] #html(<div style="padding-left:10px;">) 2次元データの操作には DataFrame を利用する。 *** リストからDataFrameを生成する [#l44c7837] #html(<div style="padding-left:10px;">) #mycode2(){{ # coding: utf-8 import pandas as pd df = pd.DataFrame([[1,2,3],[4,5,6]]) print(df) }} 結果 #myterm2(){{ 0 1 2 0 1 2 3 1 4 5 6 }} #html(</div>) *** 複数のSeriesからDataFrameを作る [#wd55864c] #html(<div style="padding-left:10px;">) #mycode2(){{ xxxx }} 結果 #myterm2(){{ xxxx }} #html(</div>) *** 複数の辞書からDataFrameを作る [#wd55864c] #html(<div style="padding-left:10px;">) #mycode2(){{ xxxx }} 結果 #myterm2(){{ xxxx }} #html(</div>) *** 複数リストと辞書からDataFrameを作る1 [#wd55864c] #html(<div style="padding-left:10px;">) #mycode2(){{ xxxx }} 結果 #myterm2(){{ xxxx }} #html(</div>) *** 複数リストと辞書からDataFrameを作る2 [#wd55864c] #html(<div style="padding-left:10px;">) #mycode2(){{ xxxx }} 結果 #myterm2(){{ xxxx }} #html(</div>) #html(</div>) ** その他の基本的なメソッド [#jb08f6a8] #html(<div style="padding-left:10px;">) *** csvデータを読み込む [#v51d31d5] #html(<div style="padding-left:10px;">) #html(</div>) *** XXXX [#b7067fd1] #html(<div style="padding-left:10px;">) #html(</div>) *** XXXX [#y1e2e3fa] #html(<div style="padding-left:10px;">) #html(</div>) *** XXXX [#h0590c92] #html(<div style="padding-left:10px;">) #html(</div>) #html(</div>)