【问题标题】:python: how can I read and process a 18GB csv file?python:如何读取和处理 18GB 的​​ csv 文件?
【发布时间】:2018-01-07 23:30:02
【问题描述】:

我有一个 18GB 的​​ csv 文件,我想根据它做一些计算。我试图用 pandas 来做,但似乎只需要读取这个文件就需要很长时间。

以下代码是我所做的:

df=pd.read_csv('/Users/gaoyingqiang/Desktop/D989_Leistung.csv',usecols=[1,2],sep=';',encoding='gbk',iterator=True,chunksize=1000000)
df=pd.concat(df,ignore_index=True)

U1=df['Kanal 1-1 [V]']
I1=df['Kanal 1-2 [V]']

c=[]
for num in range(0,16333660,333340):
    lu=sum(U1[num:num+333340]*U1[num:num+333340])/333340
    li=sum(I1[num:num+333340]*I1[num:num+333340])/333340
    lui=sum(I1[num:num+333340]*U1[num:num+333340])/333340
    c.append(180*mt.acos(2*lui/mt.sqrt(4*lu*li))/np.pi)
    lu=0
    li=0
    lui=0

phase=pd.DataFrame(c)
phase.to_excel('/Users/gaoyingqiang/Desktop/Phaseverschiebung_1.xlsx',sheet_name='Sheet1')

有什么方法可以加速这个过程吗?

【问题讨论】:

  • 它是否适用于较小的文件?
  • 我尝试了一个 2GB 的文件,但也出现了同样的错误

标签: python pandas csv readfile dask


【解决方案1】:

df 是TextFileReader,不是DataFrame,所以需要concat:

df = pd.concat(df, ignore_index=True)

示例:

import pandas as pd
from pandas.compat import StringIO

temp=u"""id,col1,col2,col3
1,13,15,14
1,13,15,14
1,12,15,13
2,18,15,13
2,18,15,13
2,18,15,13
2,18,15,13
2,18,15,13
2,18,15,13
3,14,15,13
3,14,15,13
3,14,185,213"""
df = pd.read_csv(StringIO(temp), chunksize=3)
print (df)
<pandas.io.parsers.TextFileReader object at 0x000000000D6E2EF0>

df = pd.concat(df, ignore_index=True)
print (df)
    id  col1  col2  col3
0    1    13    15    14
1    1    13    15    14
2    1    12    15    13
3    2    18    15    13
4    2    18    15    13
5    2    18    15    13
6    2    18    15    13
7    2    18    15    13
8    2    18    15    13
9    3    14    15    13
10   3    14    15    13
11   3    14   185   213

【讨论】:

  • 谢谢它可以工作,但它仍然需要很长时间才能阅读它......无论如何它可以让这个过程更快?
  • 我的文件很大,有问题。也许可以帮助一些替代方法来处理像dask 这样的大文件。
  • 为什么不使用 Spark?
  • @DatTran - 是的,它应该是替代方案,我相信有更多可能的解决方案来处理大文件。
  • 嗯,我明白了。如果创建一些具有所需输出的数据样本minimal, complete, and verifiable example 可能会有所帮助,以便更轻松地验证解决方案,然后为大 df 应用解决方案。也可以帮助how to provide a great pandas example。
猜你喜欢
  • 2018-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-27
相关资源
最近更新 更多