概要 pythonによるデータ分析入門を参考に、MovieLens 1Mを使ってsqlで普段やってるようなこと(joinとかgroup byとかsortとか)をpandasにやらせてみる。 ファイルの読み込み 落としてきたファイルを解凍すると、movies.dat、rating.dat、users.datという3つのファイルが入っているので、read_csvで読み込む。 import pandas as pd movies = pd.read_csv( 'ml-1m/movies.dat', sep='::', header=None, names=['movie_id', 'title', 'genres'] ) ratings = pd.read_csv( 'ml-1m/ratings.dat', sep='::', header=None, names=['user_id', 'mo
サインアップ こちらのページからサインアップを行います。現在のところ、14日間のトライアル期間があるため、その間はPrestoを利用することが可能です。 Pandasは、公式から引用すると、下記みたいな感じのツールです。 pandas is an open source, BSD-licensed library providing high-performance, easy-to-use data structures and data analysis tools for the Python programming language. Pythonのインストール Ubuntu14.04ではPython3.4が入っているが、python3がエイリアスになっていたりして、面倒なので、pyenvで環境構築を行います。 参考: http://qiita.com/akito1986/item
これは何? Pandasのチートシートです。ほぼ自分用メモ。最低限の行間を読める人向け。 Pandasチートシート 基本データ操作 各種インポート import pandas as pd import matplotlib as matplotlib import matplotlib.pyplot as plt from IPython.display import display %matplotlib inline data = pd.read_csv('https://gist.githubusercontent.com/kojim/0a47ed4258222b0541a42aa9fd7da906/raw/a5d6a1a527deec269697c5b2ddab4157184af4ff/civ4.csv') data.head(5)
以下の記述を発見 pandas 0.18.0 documentation » Remote Data Access Warning In pandas 0.17.0, the sub-package pandas.io.data will be removed in favor of a separately installable pandas-datareader package. This will allow the data modules to be independently updated to your pandas installation. The API for pandas-datareader v0.1.1 is the same as in pandas v0.16.1. (GH8961) You should replace the imports of t
データの前処理にはいくつかの工程がある。書籍「データ分析プロセス」には 欠損など 前処理に必要なデータ特性の考慮とその対処方法が詳しく記載されている。 が、書籍のサンプルは R なので、Python でどうやればよいかよく分からない。同じことを pandas でやりたい。 データ分析プロセス (シリーズ Useful R 2) 作者: 福島真太朗,金明哲出版社/メーカー: 共立出版発売日: 2015/06/25メディア: 単行本この商品を含むブログ (2件) を見る とはいえ、pandas 自身は統計的 / 機械学習的な前処理手法は持っていない。また Python には R と比べると統計的な前処理手法のパッケージは少なく、自分で実装しないと使えない方法も多い。ここではそういった方法は省略し、pandas でできる前処理 / 可視化を中心に書く。 また、方法自体の説明は記載しないので、詳細
pandas は可視化のための API を提供しており、折れ線グラフ、棒グラフといった基本的なプロットを簡易な API で利用することができる。一般的な使い方は公式ドキュメントに記載がある。 Visualization — pandas 0.17.1 documentation これらの機能は matplotlib に対する 薄い wrapper によって提供されている。ここでは pandas 側で一処理を加えることによって、ドキュメントに記載されているプロットより少し凝った出力を得る方法を書きたい。 補足 サンプルデータに対する見せ方として不適切なものがあるが、プロットの例ということでご容赦ください。 パッケージのインポート import matplotlib.pyplot as plt plt.style.use('ggplot') import matplotlib as mpl m
最近の空き時間は GitHub で草植えをしている。まずは pandas を日本語環境で使う場合に たまに必要になる処理をまとめた パッケージを作った。 インストール pip install japandas 機能 機能の一覧はこちら。 日時処理 日本語日付のパース 日本の祝日カレンダー 文字列処理 Unicode 正規化 全角/半角変換 リモートデータアクセス 詳細はドキュメントを。 http://japandas.readthedocs.org/en/stable/ 日時処理 日本語日付のパース pandas には 日付らしい入力を適切に処理してくれる pandas.to_datetime があるが、これは日本語の日付 ( "XX年XX月XX日" とか ) に対応していない。例えば 以下のような入力は日時としてパースされず 文字列のまま残ってしまう。 import pandas as
DataFrameを作る DataFrameの作成方法も幾つかあるので、その整理。 まずは、DataFrameをnumpyで行列を作り、インデックスとラベルを貼り付けるパターン。 インデックスの作成。 #Create a index dates = pd.date_range("20130101", periods=6) dates <class 'pandas.tseries.index.DatetimeIndex'> [2013-01-01, ..., 2013-01-06] Length: 6, Freq: D, Timezone: None #Create a DatFrame df = pd.DataFrame(np.random.randn(6,4),index = dates, columns = list("ABCD")) df A B C D 2013-01-01 0.7
概要 こちらの続き。これで pandas でのデータ選択についてはひとまず終わり。 Python pandas データ選択処理をちょっと詳しく <前編> - StatsFragments Python pandas データ選択処理をちょっと詳しく <中編> - StatsFragments サンプルデータの準備 データは 前編と同じものを使う。ただし変数名は変えた。 import pandas as pd s1 = pd.Series([1, 2, 3], index = ['I1', 'I2', 'I3']) df1 = pd.DataFrame({'C1': [11, 21, 31], 'C2': [12, 22, 32], 'C3': [13, 23, 33]}, index = ['I1', 'I2', 'I3']) s1 # I1 1 # I2 2 # I3 3 # dtype:
概要 書いていて長くなったため、まず前編として pandas で データを行 / 列から選択する方法を少し詳しく書く。特に、個人的にはけっこう重要だと思っている loc と iloc について 日本語で整理したものがなさそうなので。 サンプルデータの準備 import pandas as pd s = pd.Series([1, 2, 3], index = ['I1', 'I2', 'I3']) df = pd.DataFrame({'C1': [11, 21, 31], 'C2': [12, 22, 32], 'C3': [13, 23, 33]}, index = ['I1', 'I2', 'I3']) s # I1 1 # I2 2 # I3 3 # dtype: int64 df # C1 C2 C3 # I1 11 12 13 # I2 21 22 23 # I3 31 32
>>> pd.DataFrame([[1,2,3],[4,5,6]]) 0 1 2 0 1 2 3 1 4 5 6 >>> x = pd.DataFrame([[1,2,3],[4,5,6]]) >>> pd.DataFrame([[1,2,3],[4,5,6]]) 0 1 2 0 1 2 3 1 4 5 6 >>> x = pd.DataFrame([[1,2,3],[4,5,6]]) >>> x 0 1 2 0 1 2 3 1 4 5 6 >>> x.index = list("ab") >>> x.columns = list("cde") >>> x c d e a 1 2 3 b 4 5 6 >>> x = pd.DataFrame([[1,2,3],[4,5,6]], index=list("ab"), columns=list("cde")) >>> x c d e a 1
>>> x = pd.DataFrame([[1,0],[-2,3]]) >>> y = pd.DataFrame([[-1,1],[4,2]]) >>> x.dot(y) 0 1 0 -1 1 1 14 4 >>> x * y 0 1 0 -1 0 1 -8 6 x %o% y はわからない 逆行列もnumpyに頼る感じ 行列の次元ごとに演算を適用する applyでaxisで行か列かを選択する。applyはよく使う >>> x 0 1 0 1 0 1 -2 3 >>> x.apply(sum, axis=0) #colsum 0 -1 1 3 dtype: int64 >>> x.apply(sum, axis=1) #rowsum 0 1 1 1 dtype: int64
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く