当前位置: 首页 > 知识库问答 >
问题:

Python:如何读取和处理一个18GB的csv文件?[副本]

谯英彦
2023-03-14

下面是我所做的代码:

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')

有没有办法加速这个过程?

共有1个答案

颜君浩
2023-03-14

你读了一百万块,然后把它分成一个巨大的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)
 类似资料:
  • 我的问题是: > 如何使其与较大的文件一起工作? 有什么办法能让它快一点吗? 我的电脑有8GB的RAM,运行64位Windows 7,处理器是3.40GHz(不确定你需要什么信息)。

  • 问题内容: 我正在尝试在pandas中读取较大的csv文件(大约6 GB),并且遇到以下内存错误: 任何帮助吗? 问题答案: 该错误表明机器没有足够的内存来一次将整个CSV读入。假设你一次也不需要整个数据集都在内存中,那么避免该问题的一种方法是分批处理CSV(通过指定chunksize参数): 该参数指定每个块的行数。(当然,最后一块可能少于行。)

  • 有什么能帮上忙的吗?

  • 问题内容: 我目前正在尝试从Python 2.7中的.csv文件中读取数据,该文件最多包含100万行和200列(文件范围从100mb到1.6gb)。对于少于300,000行的文件,我可以(非常缓慢地)执行此操作,但是一旦超过该行,就会出现内存错误。我的代码如下所示: 在getstuff函数中使用else子句的原因是,所有符合条件的元素都将一起列在csv文件中,因此,经过它们以节省时间时,我离开了循

  • 问题内容: 当我卷曲到API调用链接时http://example.com/passkey=wedsmdjsjmdd 我以csv文件格式获取员工输出数据,例如: 如何使用python解析。 我试过了: 但它不起作用,我出现了一个错误 谢谢! 问题答案: 您需要替换为urllib.urlopen或urllib2.urlopen。 例如 这将输出以下内容 最初的问题被标记为“ python-2.x”,

  • 本文向大家介绍python读取几个G的csv文件方法,包括了python读取几个G的csv文件方法的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇python读取几个G的csv文件方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。