2017-07-15 6 views
1

わかりやすい質問を - 私は次のことをやっている:データフレームのスピードアップパンダのcsv読み込み、その後の意気消沈

train_set = pd.read_csv('./input/train_1.csv').fillna(0) 
for col in train_set.columns[1:]: 
    train_set[col] = pd.to_numeric(train_set[col],downcast='integer') 

最初の列は文字列です - 残りはint型です。 Read_csvは私が必要としない浮動小数点数を与えます。ダウンサンプリングの結果、RAM使用量はほぼ50%削減されますが、処理速度が大幅に低下します。私はすべてのことを1つのステップで行うことはできますか?それとも誰かがこれをマルチスレッド化する方法を知っていますか?
THX

答えて

3

私はあなたがこれらの二つの機能を試してみて、再びパフォーマンスを見ることをお勧め:あなたがファイルを読み込むときに、ファイル

を読んだ後

# or uint8/int16/int64 depends on your data 
pd.read_csv('input.txt', sep=' ', dtype=np.int32) 

# or you can use converters with lambda function 
pd.read_csv('test.csv', sep=' ', converters={'1':lambda x : int(x)}) 
  • があなたのデータフレームに変換

    1. 変換を

      df['MyColumnName'] = df['MyColumnName'].astype(int)

  • +0

    hmm私は考えているが、問題は最初の行が文字列であることです。読み取りプロセスでdtypeを指定しても、文字列では機能しません。あなたは別にそれらを読むでしょうか?注文を保存できますか? – dv3

    +0

    私はコードを編集しました。コンバーターも私のために働いた – imanzabet

    +0

    - コードは再び動作しますが、問題は解決しません。これは、名前 '1'の列をintsに変換します。私は最初の列を文字列として、残りの文字列を浮動小数点数(合計551文字)に変換したいと思います。 – dv3

    関連する問題