python能处理csv文件吗_python处理csv文件非常慢

因此,我尝试打开一个csv文件,读取它的字段,并基于此修复其他一些字段,然后将数据保存回csv。我的问题是csv文件有200万行。最好的方法是什么来加快速度。

csv文件包括

ID; DATE(d/m/y); SPECIAL_ID; DAY; MONTH; YEAR

我正在计算同一日期的行在我的记录中出现的频率,然后根据该数据更新特殊的\u id。

根据我以前的研究,我决定用熊猫。我将在将来处理更大的数据集(1-2GB)-这一个大约119MB,所以我必须找到一个好的快速解决方案。

我的代码如下:

df = pd.read_csv(filename, delimiter=’;’)

df_fixed= pd.DataFrame(columns=stolpci) #when I process the row in df I append it do df_fixed

d = 31

m = 12

y = 100

s = (y,m,d)

list_dates= np.zeros(s) #3 dimensional array.

for index, row in df.iterrows():

PROCESSING LOGIC GOES HERE

IT CONSISTS OF FEW IF STATEMENTS

list_dates[row.DAY][row.MONTH][row.YEAR] += 1

row[‘special_id’] = list_dates[row.DAY][row.MONTH][row.YEAR]

df_fixed = df_fixed.append(row.to_frame().T)

df_fixed .to_csv(filename_fixed, sep=’;’, encoding=’utf-8′)

我试着每处理1000行就打印一次。起初,我的脚本1000行需要3秒,但运行时间越长,速度越慢。

在43000排,需要29秒等等…

感谢以后的帮助:)

编辑:

我正在添加有关csv和expected输出的其他信息

ID;SPECIAL_ID;sex;age;zone;key;day;month;year

2;13012016505__-;F;1;1001001;1001001_F_1;13;1;2016

3;25122013505__-;F;4;1001001;1001001_F_4;25;12;2013

4;24022012505__-;F;5;1001001;1001001_F_5;24;2;2012

5;09032012505__-;F;5;1001001;1001001_F_5;9;3;2012

6;21082011505__-;F;6;1001001;1001001_F_6;21;8;2011

7;16082011505__-;F;6;1001001;1001001_F_6;16;8;2011

8;21102011505__-;F;6;1001001;1001001_F_6;16;8;2011

我得换了

-在”特殊ID”字段中输入正确的数字。

例如,对于具有

id=2特殊的\u id将

26022018505001(

-被001替换)如果csv中的其他人在同一天、同一个月、同一年、同一天共享,那么uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

因此,上述行的expected输出将是

ID;SPECIAL_ID;sex;age;zone;key;day;month;year

2;13012016505001;F;1;1001001;1001001_F_1;13;1;2016

3;25122013505001;F;4;1001001;1001001_F_4;25;12;2013

4;24022012505001;F;5;1001001;1001001_F_5;24;2;2012

5;09032012505001;F;5;1001001;1001001_F_5;9;3;2012

6;21082011505001;F;6;1001001;1001001_F_6;21;8;2011

7;16082011505001;F;6;1001001;1001001_F_6;16;8;2011

8;21102011505002;F;6;1001001;1001001_F_6;16;8;2011

编辑:

我把代码改成这样:我用数据填充听写列表,然后将该列表转换为数据帧并另存为csv。这需要大约30分钟才能完成

list_popravljeni = []

df = pd.read_csv(filename, delimiter=’;’)

df_dates = df.groupby(by=[‘dan_roj’, ‘mesec_roj’, ‘leto_roj’]).size().reset_index()

for index, row in df_dates.iterrows():

df_candidates= df.loc[(df[‘dan_roj’] == dan_roj) & (df[‘mesec_roj’] == mesec_roj) & (df[‘leto_roj’] == leto_roj) ]

for index, row in df_candidates.iterrows():

vrstica = {}

vrstica[‘ID’] = row[‘identifikator’]

vrstica[‘SPECIAL_ID’] = row[’emso’][0:11] + str(index).zfill(2)

vrstica[‘day’] = row[‘day’]

vrstica[‘MONTH’] = row[‘MONTH’]

vrstica[‘YEAR’] = row[‘YEAR’]

list_popravljeni.append(vrstica)

pd.DataFrame(list_popravljeni, columns=list_popravljeni[0].keys())

Original: https://blog.csdn.net/weixin_28692817/article/details/112923656
Author: 孙煜征
Title: python能处理csv文件吗_python处理csv文件非常慢

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/743895/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球