python:如何读取和处理 18GB 的 csv 文件? [复制]
Posted
技术标签:
【中文标题】python:如何读取和处理 18GB 的 csv 文件? [复制]【英文标题】:python: how to read and process a 18GB csv file? [duplicate] 【发布时间】:2018-01-08 04:16:18 【问题描述】:我有一个 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')
有没有办法加速这个过程?
【问题讨论】:
是否需要生成一个单一的、海量的excel文件?你确定 excel 能读懂这个吗? 【参考方案1】:您以 1,000,000 个为单位读取它,然后将其连接成一个巨大的 df,然后对其进行处理。读取一个块,处理它(写它?)然后读取下一个块会更快吗?
当你回复你的评论时
df_chunks = pd.read_csv(..... chunksize=1000000)
你得到一个 pandas.io 对象(或类似的东西)
我很确定你可以做到这一点:
for chunk in df_chunks:
# do something, eg..
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)
# append phase to a csv file (i'd have to google how to do that but I'm sure you can)
如果您搜索 SO,则有一些关于此的主题,例如: How to read a 6 GB csv file with pandas
【讨论】:
你能告诉我如何读取并处理它吗? 我读了 How to read a 6 GB csv file with pandas,但我不知道进程(块)是什么意思,似乎块本身不是 pandas DataFrame 对吗?以上是关于python:如何读取和处理 18GB 的 csv 文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Python Pandas:标记数据时出错。 C 错误:读取 1GB CSV 文件时字符串中的 EOF 开始