需要关于加快python代码数据清理速度的建议吗

需要关于加快python代码数据清理速度的建议吗,python,algorithm,pandas,data-analysis,data-science,Python,Algorithm,Pandas,Data Analysis,Data Science,我正在使用python笔记本(jupyter)运行一个侧面数据分析项目。数据集有1.3行,我要做的第一件事是从数据集中的“日期”列中提取日期、月份和年份。我写的代码执行得很好,只是需要很长时间。我估计完成数据处理程序可能需要一个半小时。我想知道是否有人能对我的代码提出一些建议来提高速度 import csv from datetime import datetime def date_split(calendar): new_calendar={} i=0 calend

我正在使用python笔记本(jupyter)运行一个侧面数据分析项目。数据集有1.3行,我要做的第一件事是从数据集中的“日期”列中提取日期、月份和年份。我写的代码执行得很好,只是需要很长时间。我估计完成数据处理程序可能需要一个半小时。我想知道是否有人能对我的代码提出一些建议来提高速度

import csv
from datetime import datetime

def date_split(calendar):
    new_calendar={}
    i=0
    calendar_total=pd.DataFrame()
    num=calendar.shape[0]-1
    while i<=10000:

        tem=calendar_data.iloc[i,1]
        #extract year&month&day from day column
        listdate=datetime.strptime(tem,'%Y-%m-%d')
        new_calendar['Year']=listdate.year
        new_calendar['Month']=listdate.month
        new_calendar['Date']=listdate.day
        # add the other columns
        new_calendar['listId']=calendar.iloc[i,0]
        new_calendar['available']=calendar.iloc[i,2]
        new_calendar['price']=calendar.iloc[i,3]
        new_calendar=pd.DataFrame.from_records(new_calendar,index=[i])
        #change new_calendar data type from dic to pd dataframe        
        calendar_total=calendar_total.append(new_calendar)
        i=i+1

     return calendar_total    
导入csv
从日期时间导入日期时间
定义日期分割(日历):
新日历={}
i=0
calendar_total=pd.DataFrame()
num=日历。形状[0]-1

而我这就是如何将年、月和日从现有数据帧提取到新数据帧中的方法:

import numpy as np
import pandas as pd

df = pd.DataFrame({'date' : pd.date_range("19970202", periods=365*20)})

df2 = pd.DataFrame({'year' : df['date'].dt.year, 'month' : df['date'].dt.month, 'day' : df['date'].dt.day})

print (df)
print (df2)

我还没有对一个大数据集(130万行?)进行测试,但这可能会给您带来一个加速。

您是否通过分析等方法发现代码中的任何特定瓶颈?您好,Johannesmik,感谢您提供的解决方案。但是,在我的例子中,我需要先将原始数据分解为类似datetime的对象,然后才能使用您的方法。我在数据框中的日期类似于“2007-10-09”,我使用strtime函数来打破它们,python确实需要很长时间才能通过130万行。不管怎样,请随意分享您的想法,谢谢您的见解,真的很有帮助:)在您的代码中花费很长时间的是100万个附件。您还可以使用pd.to\u datetime将字符串列(如“2007-10-09”)转换为日期时间列。例如,您可以创建一个包含日期时间值的临时数据框,如下所示:
df2=pd.dataframe({'a':df['a'],'B':pd.to_datetime(df['B']),'c':df['c']})
(其中df['B']包含日期格式的字符串)。然后,您可以使用类似于我的答案的代码创建一个包含月份、日期和日期行的数据框,等等,我相信追加需要很长时间。后来我发现使用pandas-in-buit函数来创建datetime真的很有帮助。我使用以下代码提取年份值:split['year']=pd.to_datetime(calendar_data['date']).dt.year。花了