###前提・実現したいこと
300万行ほどの下記のようなデータがあり(CSV)、
その際、欠損値や型違いの値を削除もしくは別の値に置き換えています。
この処理速度を速くするために良い方法はないでしょうか?
◆CSVデータ(test.csv)
item,earnings
商品A,123
商品B,
商品A,aaa
商品B,111
商品C,商品
このように、金額の列に欠損値や型違いの値があるため、クリーニング処理をしています。
###発生している問題・エラーメッセージ
(2)earnings列をint型に変換するところ for i, v in df.iterrows(): try: df.ix[i,1]=int(df.ix[i,1]) except: df.ix[i,1]=0 で25分程度 df_pivot = df.pivot_table(values = ['earnings'],index = ['item'],aggfunc = 'sum’) で7分程度かかっています。
###該当のソースコード
import pandas as pd #表示する行数を設定 #CSV読み込み df = pd.read_csv('test.csv', names=['item','earnings'],skiprows=1) #----クリーニング処理----# #(1)NULL行削除 df=df.dropna() #(2)earnings列をint型に変換する #このとき、エラーとなった場合に「0」を入れる(ここで型違いがあるかどうかを判別している) for i, v in df.iterrows(): try: df.ix[i,1]=int(df.ix[i,1]) except: df.ix[i,1]=0 #---PIVOT----# df_pivot = df.pivot_table(values = ['earnings'],index = ['item'],aggfunc = 'sum') #降順に並び替え df_pivot=df_pivot.sort_values(by="earnings",ascending=False) #CSVに出力 df_pivot.to_csv('pivot.csv')
###補足情報(言語/FW/ツール等のバージョンなど)
Python 3.5.1
Mac OS10.11.6
MacBook Pro (Retina, 13-inch, Late 2013)
2.6 GHz Intel Core i5
メモリ 8 GB 1600 MHz DDR3
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/21 01:13
2017/03/21 03:47