- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2018-10-29T11:20:10+00:00","","")
[pythonメモ]
#author("2018-10-29T12:52:15+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
** 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 を利用する。
*** 2次元データの作成 [#a9180b30]
#html(<div style="padding-left:10px;">)
2次元データは DataFrame を利用して作成する。
#mycode2(){{
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>)