• Like
Intoroduction of Pandas with Python
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Intoroduction of Pandas with Python

  • 3,991 views
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,991
On SlideShare
0
From Embeds
0
Number of Embeds
5

Actions

Shares
Downloads
33
Comments
0
Likes
7

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 集合知プログラミング勉強会キックオフMtgPandas超入門 @gepuro1
  • 2. 自己紹介● 早川 敦士 (@gepuro)● 電気通信大学システム工学科4年生● 専攻:信頼性工学● 好きな言語:Python,R,AWK● 趣味:花火,テキストマイニング,アニメ● 活動場所:電通大,MMA,iAnalysis,DBCLS 2
  • 3. Pandasとは?pandas is an open source, BSD-licensedlibrary providing high-performance, easy-to-use data structures and data analysis toolsfor the Python programming language. http://pandas.pydata.org/ よりpandasはハイパフォーマンスなライブラリで、Pythonでデータ構造やデータ解析ツールをめっちゃ使いやすい。(超意訳) 3
  • 4. Pandasの役割● データの加工からモデリングをスムーズに行 える。● R言語のデータフレームに出来るような操作を Pythonで行える。● Pandas自体には多くの統計モデルが実装され ていないので、他のライブラリとの連携が必 要。● pandasは、Rへのインターフェースがある。 Rpy2との連携● などなど 4
  • 5. Pandasの情報● http://pandas.pydata.org/pandas-docs/stable/ にある公式ドキュメントが整っていて見やす い。● この勉強会では、ここにある情報を主に紹介 できたらと思う。 5
  • 6. Pandasのインストールソースからgit clonegit://github.com/pydata/pandas.gitcd pandaspython setup.py installubntuユーザならapt-get install python-pandas 6
  • 7. Pandasの依存ライブラリDependenciesNumPy: 1.6.1 or higherpython-dateutil 1.5Optional dependenciesSciPy: miscellaneous statistical functionsPyTables: necessary for HDF5-based storagematplotlib: for plottingscikits.statsmodels:Needed for parts of pandas.statspytz:Needed for time zone support with date_range 7
  • 8. データ構造Dimensions Name Description1 Series 1D labeled homogeneously-typed array1 TimeSeries Series with index containing datetimes2 DataFrame General 2D labeled, size- mutable tabular structure with potentially heterogeneously-typed columns3 Panel General 3D labeled, also size-mutable array 8
  • 9. Seriesの利用 Seriesに挿入できるデータ型● a Python dict● an ndarray● a scalar value (like 5)In [52]: pd.Series(np.random.randn(5), index=["a", "b", "c", "d", "e"])Out[52]:a -0.904244b 0.870734c -0.217093d 0.123815e 0.356112In [53]: s = pd.Series(np.random.randn(5), index=["a", "b", "c", "d", "e"])In [54]: s.indexOut[54]: Index([a, b, c, d, e], dtype=object) 9
  • 10. Seriesでの計算In [66]: s + sOut[66]:a 0.388344b 3.670871c 1.306869d -0.237199e 3.168135 ベクトル計算も楽に出来る!In [67]: s * 2Out[67]:a 0.388344b 3.670871 Rでの操作と同じ感覚!c 1.306869d -0.237199e 3.168135In [68]: np.log(s)Out[68]:a -1.639012b 0.607282c -0.425513d NaN 10e 0.459996
  • 11. DataFrameの利用 DataFrameに挿入できるデータ型● Dict of 1D ndarrays, lists, dicts, or Series● 2-D numpy.ndarray● Structured or record ndarray● A Series● Another DataFrame In [9]: d = {one : pd.Series([1., 2., 3.], index=[a, b, c]), two : pd.Series([1., 2., 3., 4.], index=[a, b, c, d])} In [10]: df = pd.DataFrame(d) In [11]: df Out[11]: one two a 1 1 b 2 2 c 3 3 11 d NaN 4
  • 12. DataFrameでの計算In [17]: df + dfOut[17]: one twoa 2 2b 4 4c 6 6d NaN 8 Series同様に、In [18]: df + 1 馴染みの操作が出来る。Out[18]: one twoa 2 2b 3 3c 4 4d NaN 5 12
  • 13. DataFrameでの列の追加In [21]: dfOut[21]: one twoa 1 1b 2 2c 3 3d NaN 4 辞書型(連想配列)を扱うIn [22]: df["three"] = df["one"] * df["two"] ように、列を追加出来る。In [23]: dfOut[23]: one two threea 1 1 1b 2 2 4c 3 3 9d NaN 4 NaN 13
  • 14. DataFrameへのアクセスIn [46]: df["one"]Out[46]:a 1 列でアクセスb 2c 3d NaNName: oneIn [47]: df.xs("a")Out[47]:one 1 行でアクセスtwo 1three 1Name: a 14
  • 15. In [91]: df.mean() DataFrameOut[91]:one 2.000000 での便利メソッドtwo 2.500000three 4.666667In [92]: df.max()Out[92]:one 3two 4three 9In [93]: df.var()Out[93]:one 1.000000two 1.666667Three 16.333333In [100]: df.apply(lambda x:x.max() - x.min())Out[100]:one 2two 3three 8 15 DataFrameに対して、統計量を求めることが出来る。
  • 16. DataFrameに対してソートIn [121]: df.sort_index(by="one")Out[121]: one two threea 1 1 1b 2 2 4c 3 3 9d NaN 4 NaN ソートも楽に出来る。In [122]: byに配列を使って複数指定するdf.sort_index(by="one",ascending=False) ことも可能Out[122]: one two threed NaN 4 NaNc 3 3 9b 2 2 4a 1 1 1 16
  • 17. pandasとscikit-learn gepuro@ubuntu:~$ cat hoge.csv a,b 1,1 2,3 4,6 1,3 2,2 1,1参考:http://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#example-linear-model-plot-ols-py 17
  • 18. ご清聴ありがとうございました! 18