使用 python 脚本推断 excel 文件中的数据

Extrapolate data in an excel file using python script

我有一些国家的给定数据集,其中包含以下字段:

DATE
SOURCE COMPANY 
DESTINATION COMPANY 
QUANTITY
UNITS

我有 2 天的数据,我需要根据每个公司的日期和数量值推断一年的数据,然后在 excel 中打印结果。

我需要每家公司 1 行 x 交付给每家公司 y 1 年。日期可以从 2018 年到今天,数量可以有 +/- 100 的差异。

代码

import pandas as pd 
import numpy as np 
import os 
import datetime 
import random 
import sys 
from datetime import timedelta 

df = pd.read_csv("Location") 
df_1 = df 
for i in range(1,366): 
  for i in range(0,df.shape[0]): 
    df['Quantity'][i] = df['Quantity'][i] + random.randint(-100,100)    
    df['Date'][i] = pd.to_datetime(df['Date'])[i] + timedelta(days = -1)

df_1 = pd.concat([df_1,df]) 
df_1.to_csv("Extrapolated_data.csv",sep = '')

但是它耗费的时间是不可接受的,我该如何让它变得更好

我认为您在对问题的评论中发布的代码存在一些您必须注意的问题:

  1. sepdf_1.to_csv()参数需要设置为一个字符,即“,”或“;” (参见 here),否则,如果您不想使用另一个分隔符,则只需省略它,然后是 ","
  2. 您的源文件没有 .csv 扩展名(这可能完全没问题)
  3. 分配df_1 = df不仅会复制DataFrame的columns/meta-data,还会复制包括所有数据的DataFrame。这将生成一个包含原始数据和生成数据的文件。

更新代码

由于我对 pandas 还是个新手,我看不出只有遍历行的方法,而是不得不遍历行和列,这导致了以下代码。我的样本文件总共有大约 40 行,结果文件有 ~13.000 行,文件大小为 619 KB。创建时间为 60,007 秒。从代码中删除时间计算和随机性将创建时间减少到 54.38 秒。这不是超快,但我也不会称之为超慢。

import pandas as pd 
import numpy as np 
import os 
import datetime 
import random 
import sys 
from datetime import timedelta 
from timeit import default_timer as timer

df = pd.read_csv("orders.csv") 
df_1 = pd.DataFrame(columns=df.columns) 
start = timer()

for d in range(1,366):
  for index, dfc in df.iterrows():

    dfc['Quantity'] = dfc['Quantity'] + random.randint(-100,100)    
    dfc['Date'] = pd.to_datetime(dfc['Date']) + timedelta(days = -d)
    df_1 = df_1.append(dfc, ignore_index=True)

  print("Loop ",d)  

end = timer()
print(end - start) 

df_1.to_csv("Extrapolated_data.csv",sep = ',')