20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

39
Python / pandas Sky

Upload: ryuji-tamagawa

Post on 23-Jan-2018

1.107 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

Python / pandasSky

Page 2: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京
Page 3: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

• Python 2000

(**)

• db tech showcase MongoDB

• FB: Ryuji Tamagawa• Twitter : tamagawa_ryuji

Page 4: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京
Page 5: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

2015-2016

Page 6: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

• Python / pandas

• Python / pandas

Page 7: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

• Python

• Python

• NumPy, SciPy, matplotlib, pandas• Python

• Python IPython, Jupyter notebook, Spyder, VisualStudio

• Python / pandas

• Python

• pandas

• Spark - PySpark DataFrame API

• matplotlib

Page 8: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

Part 1 : Python

Page 9: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

Python•

• Google GuidoGoogle Google

1

NumPy, SciPy, matplotlib →

pandas

-2000Linux

-2010 Web Trac

Google

Page 10: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

Python•

• ’Batteries included’

Page 11: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

Python• 2.x 3.x 32bit 64bit

64bit

• 2.x

• 3.x3

• 2.x3.x

Page 12: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

• Ruby?

• R?

• Java?

• Scala?

Page 13: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

Python• Python ’CPython’ JIT

PyPy JVM Jython .Net IronPython

• CPython

• CPython 2

• C

• processingPySpark

Page 14: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

Python• Python Linux Mac OS

Python PythonMac

• Python pip 3.x 2.7.9 2.xPython pip Linux Pythonpip yum apt

• Python Anaconda Pythonconda

• python 2016 http://qiita.com/y__sama/items/5b62d31cb7e6ed50f02c

Page 15: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

NumPy, SciPy, matplotlib, pandas

• NumPy SciPy

• pandaspandas pandas NumPy

• Anaconda Python

Page 16: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

Python•

scikit-learn http://scikit-learn.org/stable/

Page 17: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

Python• TensorFlow

Python

Page 18: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

Python

IPython

Jupyter, …

IDESpyder, Rodeo

Visual Studio, PyCharm, PyDev

Page 19: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

• IPython

• Anaconda

Page 20: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

• Jupyter Notebook

• Python

• IPython Notebook

Python

• Apache Zeppelin http://zeppelin.apache.org

Page 21: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

IDE

• R RStudio

• IDE

• 2 Spyder Rodeo

Spyder

Page 22: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

• Visual Studio

• Eclipse PyDev

• PyCharm

Page 23: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

Part 2 : Python / pandas

Page 24: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

Python / pandas

• pandas

• /etc…

Spark

• pandas

Page 25: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

processing•

• 64bit Python + GB

• Python 11 CPU

GIL

• processingJenkins

CPU/

Jenkins

Page 26: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

1 1.2 1000000

‘abc’ ’ ’

[1, 2, 3, ‘foo’, ‘bar’, ‘foo’]

(1, 2, 3, ‘foo’, ‘bar’, ‘foo’)

{‘k1’: ‘value1’, ‘k2’: ‘value2’}

set(1, 2, 3, ‘foo’, ‘bar’)

Page 27: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

• split

s = ‘foo, bar, baz’

items = s.split(‘,’)

print items[0]

print items[-1]

print items[0][-2:]

Page 28: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

• ,

• lambda map, reduce, filter

sList = [‘foo’, ‘bar’, ‘baz’]

lList = [len(s) for s in sList]

lList = map(lambda s:len(s), sList)

lDict = {s:len(s) for s in sList}

lList = []for s in sList: lList.append(len(s))

lDict = {}for s in sList: lDict[s] = len(s)

Page 29: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

pandas• pandas

matplotlib / seaborn

• NumPySciPy

Python

• pandas + matplotlibOK pandas NumPy

NumPy / SciPy

https://openbook4.me/projects/183

Page 30: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京
Page 31: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

pandas• pandas

DataFrame

• R

• RDB2

• index Series Columns

Columns

Series Series SeriesIndex

Page 32: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

IDE /

• IDE

• jupyter notebook

Page 33: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

• http://sinhrks.hatenablog.com/entry/2015/01/28/073327

0 1

import pandas as pddf[‘nValue’] = df[‘value’] / sum(df[‘value’])

id value color

sapporo 43 red

osaka 42 pink

matsumoto 40 green

id value color nValue

sapporo 43 red 0.344

osaka 42 pink 0.336

matsumoto 40 green 0.32

Python

Page 34: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

pandas I/O• CSV JSON RDB Excel

• column

• RDB

import pandas as pd

pd.read_csv(<filename>)

pd.read_json(<filename>)

pd.to_csv(<filename>)

pd.to_excel(<filename>)

#

pd.to_clipboard()

Page 35: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

pandas.read_csv• pandas CSV

• usecols :

• nrows :

• na_values : na

• parse_dates infer_datetime_format:

• chunksize :

• compression : zip CSV

pandas.read_csv(filepath_or_buffer, sep=', ', delimiter=None, header='infer', names=None, index_col=None, usecols=None, squeeze=False, prefix=None, mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, skipfooter=None, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, iterator=False, chunksize=None, compression='infer', thousands=None, decimal='.', lineterminator=None, quotechar='"', quoting=0, escapechar=None, comment=None, encoding=None, dialect=None, tupleize_cols=False, error_bad_lines=True, warn_bad_lines=True, skip_footer=0, doublequote=True, delim_whitespace=False, as_recarray=False, compact_ints=False, use_unsigned=False, low_memory=True, buffer_lines=None, memory_map=False, float_precision=None)

Page 36: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

Spark - PySpark DataFrame API

Python

• Spark PySparkfindSpark

Spark

• Python Spark APIDataFrame API

• Spark pandas

Spark

PySpark

Sparknode

Sparknode

Sparknode

Sparknode

driver

Page 37: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

Apache Arrow

• Python / R:

feather

• pandas 2.0, parquet for Python

Page 38: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

Python / pandas

Page 39: 20161004 データ処理のプラットフォームとしてのpythonとpandas 東京

Questions ?