読者です 読者をやめる 読者になる 読者になる

<Python, pandas, Beautiful Soup> html tableからpandas dataframeへ。

html中にあるtableから、pandas dataframeを作る。 <tr> <td>タブとかを、ちくちくと、Beautiful Soupでパースしないといけないのか、、、 いやいや、そんな面倒なことは、誰かが、既に何かを作っているはず、、と思ってたら、あった。 pd.read_html()でいける。ちょ</td></tr>…

<Python, pandas, sentdex> resample

目的とするDataFrameから、値を抜き取りする、リサンプリング resample をしてみた。 In [20]: import datetime as dt In [21]: import pandas as pd In [22]: import pandas_datareader.data as web In [23]: s = dt.datetime(2000,1,1) In [24]: e = dt.da…

<pandas, Python, sentdex> Python Programming for Finance

www.youtube.com やってみた。 In [1]: import datetime as dt In [2]: import matplotlib.pyplot as plt In [3]: from matplotlib import style In [4]: import pandas as pd In [5]: import pandas_datareader.data as web In [6]: style.use('ggplot') In…

<Python, pandas> 縦にずらす。

縦にずらす。 In [22]: df = pd.DataFrame({'a':[1,2,3,4,5,6]}) In [23]: df Out[23]: a 0 1 1 2 2 3 3 4 4 5 5 6 In [24]: df.shift(-1) Out[24]: a 0 2.0 1 3.0 2 4.0 3 5.0 4 6.0 5 NaN In [25]: df.shift(1) Out[25]: a 0 NaN 1 1.0 2 2.0 3 3.0 4 4.0 …

<Python, pandas> 日経平均を読み込む。

日経平均N225を読み込む。 pandas-datareaderを使う。 pandas-datareader — pandas-datareader 0.1 documentation まずはインストール。 % conda install pandas-datareader Fetching package metadata ......... Solving package specifications: .........…

<Python, pandas> 行(row)を追加する。

行rowを追加する。 こういうデータフレームDataFrameがあった時、 In [71]: df Out[71]: id name birthday is_relative 0 1 Hage 1960-01-01 1 1 2 Hige 1960-01-02 1 1行追加したい時は、シリーズSeriesでデータ作って、.append()すればいいっぽい。 やっ…

<Pandas, peewee, sqlite> peeweeを少しためす。

peeweeを少しためしてみた。 まずは、データベースdatabase作成とデータ登録。 In [51]: from peewee import * In [52]: db = SqliteDatabase('people.db') In [53]: class Person(Model): ...: name = CharField() ...: birthday = DateField() ...: is_rel…

<Python, pandas> 文字列の置換

シリーズSeriesでの文字列置換str replace df['column'].str.replace('','')を使う。 In [52]: df = pd.DataFrame({'a':['HAGE*', 'HAGE*']}) In [53]: df.a Out[53]: 0 HAGE* 1 HAGE* Name: a, dtype: object In [54]: df.a.str.replace('\*','') Out[54]: …

<Python, pandas, Beautiful Soup> Excel から DataFrame への変換

PythonでエクセルExcelのデータを読み込んで、データフレームDataFrameにしたい。 最近のExcelさんは中身がバイナリでなくて、XMLってことは知っていたので、Beautiful Soupと組み合わせてみた。 と、いうことで、ファイル読み込み。 普通にリードしてみる。…

<Python, pandas> duplicate

重複したものを探すには、duplicate()。 In [85]: import pandas as pd In [86]: df = pd.DataFrame([[1,2],[1,3],[1,4]]) In [87]: df Out[87]: 0 1 0 1 2 1 1 3 2 1 4 で、duplicate()。 引数argvは、カラムcolumnを指定可。 In [88]: df.duplicated() Out…

<Python, pandas> ix / iloc / loc の違い

パンダさんのデータフレームpandas.DataFrameで、 ixとilocとlocの違い。 DataFrameが空emptyの場合、locさんだけは、データを追加できる! 例。 まずは、空のDataFrame作成。 In [63]: import pandas as pd In [64]: df = pd.DataFrame() In [65]: df Out[6…

<Python, pandas> 要素が全て同じカラムを削る。

要素elementが全て同じカラムcolumnを削る。 2つ技あり。.isin()と.applymap()。 まずはベースのデータフレームDataFrame作成。 In [1]: import pandas as pd In [3]: df = pd.DataFrame({'a':[1,2,'a'],'b':['a','a','a'],'c':['ab','ab','ab']}) In [4]: …

<Python, pandas> 文字列を空白で分割して、新たなカラムを作成する。

データフレームDataFrameの中に取り込んだ文字列strを、 空白blankで分割splitして、新たなカラムcolumnを作成する。 In [73]: import pandas as pd In [74]: import io In [75]: s = ''' ...: 1 aaa AAA ...: 2 bbb BBB ...: 3 ccc CCC ...: ''' In [80]: d…

<Python, pandas> DataFrame.query()で変数を使う場合

.query()(grepみたいなもの)で変数を使う場合。 @を使う。 例。 In [100]: df = pd.DataFrame({'a':[1,2,'X'],'b':[4,'X',5]}) In [101]: df Out[101]: a b 0 1 4 1 2 X 2 X 5 In [102]: df.query('a == "X"') Out[102]: a b 2 X 5 In [103]: s = 'X' In […

<Python, pandas> lambda + if

lambda式に条件を追加する場合。 例。 In [77]: f = lambda x: str(x).replace('X', '') if type(x) == str else x という風に書く。 ちなみに、elseを省くと、、、 In [78]: f = lambda x: str(x).replace('X', '') if type(x) == str File "<ipython-input-78-05daadfaf1eb>", line 1 f = </ipython-input-78-05daadfaf1eb>…

<Python, pandas> 列が一定でないデータを読み込む時、、

pandasさんで、列columnが一定でないデータを読み込むとエラーをはく。 In [18]: csv_data = ''' ...: 1,2,3,4,5 ...: 1,2,3, ...: 1,2,3,4,5,6 ...: ''' In [19]: df = pd.read_csv(io.StringIO(csv_data)) ----------------------------------------------…

<pandas, regexp> パンダさんと正規表現を使って置換

pandasのapply()で正規表現regexpを使った置換。 まずは、セットアップ。 In [1]: import pandas as pd In [2]: import re In [3]: df = pd.DataFrame([ ...: '(00001) hage', ...: '(00002) hige', ...: '(02000) taro', ...: '(12345) jiro', ...: ]) In […

<jinja, pandas> pandasでjinjaをちょっと。

pandasでjinjaをちょっとやってみた。 pandasのシリーズSeriesの要素を順に並べる。 まず、importして、jinjaのテンプレートtemplateを作る。 In [109]: import pandas as pd In [110]: from jinja2 import Template In [111]: df = pd.DataFrame({'a':[1,2,…

<Python, pandas> イタレータの要素を少しのぞく

イタレータiteraterの要素を確認する方法。 リスト内包表記で確認してたけど、next()が使えるらしい。 内包表記。 In [1]: import pandas as pd In [2]: df = pd.DataFrame({'a':[1,2,3],'b':[4,5,6],'c':[7,8,9]}) In [3]: df Out[3]: a b c 0 1 4 7 1 2 5 …

<Python, pandas> カラムを削除する。

列/カラムcolumnを削除する。 delだと思ったてけど、.drop()が使えるらしい。 In [1]: import pandas as pd In [2]: df = pd.DataFrame({'a':[1,2,3],'b':[4,5,6],'c':[7,8,9]}) In [3]: df Out[3]: a b c 0 1 4 7 1 2 5 8 2 3 6 9 delの場合。 In [4]: df2 …

<Python, pandas, SQlite> pandasでsqlite3する。

pandasでsqlite3を使う。 1.. DB作成。 In [1]: import sqlite3 In [2]: con = sqlite3.connect(':memory:') In [4]: con.execute(''' ...: create table {table} ( ...: {id} integer primary key autoincrement, ...: {name} text not null, ...: {brightn…

<Python, pandas> 対象の値の要素を選択 (grep)

データフレームDataFrame中で、見つけたい文字Stringがある場合。 .isin()を使う。 検索する値は、リストlistで渡す。 ちなみに、正規表現regexpは効かないっぽい。 値が完全に一致するものを見つけにいってる。 In [150]: df Out[150]: a b c 0 a ab x 1 b …

<Python, pandas> booleanのリストを使った行列選択

booleanのlistか、Seriesを使いデータフレームDataFrameの行列選択する。 データフレームから、Noneの部分を.applymapを使って判定。 In [129]: df Out[129]: a b 0 1 None 1 2 NaN 2 3 5 3 NaN 8 4 4 a 5 5 9 6 NaN 8 7 6 None In [130]: a = df.applymap(l…

<Python, pandas> NoneTypeの判定

NoneTypeの判定。 In [66]: n = None In [67]: n In [68]: type(n) Out[68]: NoneType In [69]: isinstance(n, NoneType) --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-69-d5714e961eee> in <module>(</module></ipython-input-69-d5714e961eee>…

<Python, pandas> インデックスを付け直す

その1 インデックスindexを付け直すresetする方法。 df.reset_index(drop=True) Stackoverflow stackoverflow.com マニュアル Indexing and Selecting Data — pandas 0.18.0 documentation pandas.DataFrame.reset_index — pandas 0.18.0 documentation そ…

<Python, pandas> Row/Columnの対で値を摘まむ

Row``と``Columnの対のセットで、値を選択する。 .lookup()を使う。 In [42]: import seaborn as sns In [43]: df = sns.load_dataset('tips') In [44]: df.head() Out[44]: total_bill tip sex smoker day time size 0 16.99 1.01 Female No Sun Dinner 2 1…

<Python, pandas> Nanのある行を選択する。Nanない行を選択する。

Nanのある行、ない行を選択する。 .isnull()と.dropna()。 お互いが逆だが、返す値がちと違う。 まずは、Nanのある行を選択。 In [31]: import pandas as pd In [32]: import numpy as np In [33]: df = pd.DataFrame({'a':[1,2,np.nan,3,4],'b':[np.nan,2,3…

<pandas, Python> カラムの入れ替え

データフレームDataFrameでカラムColumnの入れ替え。 In [1]: import pandas as pd In [2]: df = pd.DataFrame({'a':[1,2,3,4,5], 'b':[2,2,3,4,5]}) In [3]: df Out[3]: a b 0 1 2 1 2 2 2 3 3 3 4 4 4 5 5 In [4]: df[['b','a']] Out[4]: b a 0 2 1 1 2 2 …

<Python, pandas, json> numpy.arrayのjson化

numpy.arrayをjsonにする。 1次元1D arrayの簡単な場合。 In [98]: df = pd.DataFrame({'a':[1,2,3,4,5], 'b':[10,20,30,40,50]}) In [99]: df Out[99]: a b 0 1 10 1 2 20 2 3 30 3 4 40 4 5 50 In [100]: import json In [101]: json.dumps(df.values.tol…

<Python, pandas> 複数カラムの各要素の文字列の値をそれぞれ結合する。

複数カラムcolumnの各要素each elementの文字列の値string valueを、 それぞれ結合する。 In [86]: df5 Out[86]: a b c 0 1 2 5 1 2 4 hoge 2 3 6 8 3 4 8 9 4 5 10 10 In [87]: df5['d'] = df5[['a','b']].apply(lambda x: '_'.join(x), axis=1) ----------…

<Python, pandas> カラムの値で要素を検索する。 複数条件。

また忘れかかっていたので、再度メモ。 データフレームDataFrameでカラムcolumnの値で検索をかけて、 特定要素elementの値を書き換える方法。 .loc[]を使う。 複数の条件も指定可能。 In [1]: import pandas as pd In [2]: df = pd.DataFrame({'a':[1,2,3,4,…

<Python, pandas> DataFrame ?

ちみはデータフレームDataFrameか? を判定する方法。 In [10]: type(df_data_lst) Out[10]: list In [11]: type(df_data_lst[0]) Out[11]: int In [12]: type(df_data_lst[1]) Out[12]: pandas.core.frame.DataFrame In [13]: isinstance(df_data_lst[1], p…

<Python, pandas> カラムをインデックスに引き当てる

データフレームDataFrameのカラムColumnをインデックスindexに引き当てる。 set_index()を使うらしい。 In [37]: df = pd.DataFrame({ ...: 'a':[1,2,3,4,5], ...: 'b':[0,0,1,1,1], ...: 'c':['a','b','c','c','d'], ...: 'd':['e','f','g','h','i'] ...: }…

<Python, pandas, Highcharts> Highcharts 散布図

Highchartsでの散布図scatter。 pandas-highchartsモジュールが、何故かscatterに対応してない。 よって、自作。 def hic_scatter(x, y, df, hue=None): ''' highchart_scatter, ''' cd_title = '{} vs {}'.format(x, y) cd_xAxis = '{}'.format(x) cd_yAxis…

<Python, pandas, json> DataFrame を json に

データフレームpandas.DataFrameをjsonにする方法。 to_json()を使う。 ただ、これの戻り値は、文字列strなので、json.loads()をする。 In [1]: import pandas as pd In [2]: df = pd.DataFrame({'a':[1,2,3,4],'b':[5,6,7,8]}) In [3]: df Out[3]: a b 0 1 …

<pandas, Python> データフレーム中の要素のユニークなものの個数を勘定

データフレームDataFrameの1カラムColumnにある、要素elementで、 ユニークuniqueなものがいくつあるか?勘定する。 In [3]: import pandas as pd In [20]: df = pd.DataFrame({'a':[1,2,2,2,3,3],'b':[4,4,4,5,6,6]}) In [21]: df Out[21]: a b 0 1 4 1 2 …

<Python, pandas, highcharts> pandas-highcharts をちょっと試す。

pandas-highchartsをちょっと試してみた。 pypi.python.org このページの使い方usageどおりだと、いまいちわかんなかったので、 いつものこちらでお世話になりつつ、、 sinhrks.hatenablog.com で、Jupyter notebookさんを起動して、 In [1]: import pandas …

<Python, pandas> pd.read_csv() でコメントアウトの行を読み込まない

pandas.read_csv()でコメントアウトの行を読み込ませないようにする方法。 commentオプションにコメントアウトさせる文字を指定する。 In [56]: csv2 = '\na,b,c,d\n#1,2,3,4\nf,g,h,j\n' In [57]: print(csv2) a,b,c,d #1,2,3,4 f,g,h,j In [58]: pd.read_c…

<Python, pandas, regexp> 各要素に対して正規表現で検索かける。

DataFrameの各要素elementに対して正規表現regexpで検索かける方法。 DataFrame.applymap()を使う。 In [1]: df = pd.DataFrame({ ...: 'a':['hage', 'hoge', 'hige'], ...: 'b':['null', 'hige', 'hage'], ...: 'c':['fugu', 'fuga', 'fugo']}) In [2]: imp…

<Python, pandas> queryでの選択

queryでのデータフレームDataFrame選択。 grepみたいなやつだね。 従来の方法。 In [101]: df = pd.DataFrame({'a':['a','b','c'], 'b':['d','e','f']}) In [102]: df Out[102]: a b 0 a d 1 b e 2 c f In [103]: df[ df.a == 'a' ] Out[103]: a b 0 a d で…

<Python, pandas> カラムの出力を左によせる。

pandas.DataFrame.to_string()で出力した文字を左によせる方法。 formattersオプションに、対象カラムに対しての出力様式をdictで指定する。 ややこしいのがformatを2回呼び出す必要がある。 では、順を追って。まずはフォーマット文の例。5文字幅で左によ…

<Python, pandas> データフレーム文字列検索

ちと、教えてもらったので、メモメモ。 データフレームDataFrame(正確にはシリーズSeries)で、特定文字を検索する方法。 grepだね。 In [5]: import pandas as pd In [8]: df = pd.DataFrame({ ...: 'a': ['a','b','c','d','e'], ...: 'b': ['f','g','h','i'…

<Python, pandas> 任意カラムでかつ任意行を選択する。

列columnを指定して、行indexをさらに指定する。 列を[]で指定して、さらに行を[ 条件式 ]で指定する。 In [1]: import pandas as pd In [5]: import numpy as np In [6]: df = pd.DataFrame(data=np.random.randn(10,2), columns=list('ab')) In [7]: df Ou…

<Python, pandas> パンダ、列の選択でちとはまったこと。

pandasで列columnでちとはまったこと。 df[[n]]と、df.iloc[:,n]では、両方とも、columnnが選択できる。が、 df[[n]]はデータフレームDataFrame df.iloc[:,n]はシリーズSeries を返す。 なので、df[[n]].valuesを見ると違いがわかる。 In [24]: df Out[24]: …

<Python, pandas> データフレームの値の一括書き換え

データフレームDataFrameの値valueを一括で書き換えたい場合。 例えば全部1にしたい時。 df = 1 とはできない、らしい。 In [1]: import pandas as pd In [2]: import numpy as np In [3]: df = pd.DataFrame(data=np.random.randn(5,5)) In [4]: df Out[4]:…

<Python, pandas> concatで連結した時にindexを再度振り直す。

pd.concatで縦連結した時にindexを再度振り直す方法。 In [2]: df = pd.DataFrame({'a':[1,2,3],'b':[4,5,6]}) In [3]: df1 = pd.DataFrame({'a':[4,5,6],'b':[7,8,9]}) In [4]: pd.concat([df, df1]) Out[4]: a b 0 1 4 1 2 5 2 3 6 0 4 7 1 5 8 2 6 9 で、…

<Python, pandas> 文字列をデータフレームへ。

文字列StringをデータフレームDataFrameへ。 In [45]: str = 'aaaaaaaa' In [46]: data = ','.join(list(str)) In [47]: data Out[47]: 'a,a,a,a,a,a,a,a' In [48]: df = pd.read_csv(io.StringIO(data), header=None) In [49]: df Out[49]: 0 1 2 3 4 5 6 7…

<Python, pandas> 値をNaNに置き換える。

値をNaNに置き換える。 DataFrame.replace()と、np.nanを使うらしい。 In [13]: df = pd.DataFrame(data=[0,0,0,1,1,0,0]) In [14]: df Out[14]: 0 0 0 1 0 2 0 3 1 4 1 5 0 6 0 In [15]: df.replace('0', np.nan) Out[15]: 0 0 NaN 1 NaN 2 NaN 3 1 4 1 5 N…

<Python, Json, numpy, pandas> json.dumps() ではまったこと。

json.dumps() ではまったこと。 numpy.int64は蹴られる。。。 In [1502]: a Out[1502]: [1, 2, 3] In [1503]: type(a[0]) Out[1503]: int In [1504]: b Out[1504]: [1.0, 2.0, 3.0] In [1505]: type(b[0]) Out[1505]: float In [1506]: s Out[1506]: 0 1 1 2…

<Python, pandas> データフレーム(DataFrame)で sort と uniq

データフレームDataFrame で sort と uniq。 uniqはpandasではdrop_duplicates。 In [1212]: df = pd.DataFrame({'a':[2,3,1,5,8,9,0,10], 'b':[1,1,1,2,3,4,5,5]}) In [1213]: df Out[1213]: a b 0 2 1 1 3 1 2 1 1 3 5 2 4 8 3 5 9 4 6 0 5 7 10 5 In [121…