python - 使用python脚本推断excel文件中的数据
问题描述
我有一些国家的给定数据集,其中包含以下字段:
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 = '')
但是它消耗的时间是不可接受的,我该如何让它变得更好
解决方案
我认为您在对问题的评论中发布的代码存在一些问题,您必须注意:
sep
在df_1.to_csv()
参数中需要设置一个字符即“,”或“;” (请参阅此处),否则如果您不想使用另一个分隔符,则只需省略它,然后“,”- 您的源文件没有
.csv
扩展名(这可能很好) - 分配不仅会复制 DataFrame 的列/元数据,还会复制包含所有数据
df_1 = df
的 DataFrame 。这将产生一个包含原始数据和生成数据的文件。
更新代码
由于我还是熊猫的新手,我看不到只迭代行的方法,而是不得不迭代行和列,这会导致下面的代码。我的示例文件总共有大约 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 = ',')
推荐阅读
- angular - 如何将对象值映射到可观察数组
- r - 如何使用 r 中的信号样本向量的移位版本创建矩阵?
- opencv - OpenCV 3.2 已安装但无法使用。每次加载版本 4.0
- laravel - 如何使用 Laravel API 身份验证返回未授权
- gridview - Flutter:在 GridView 下方添加项目
- r - 如何在数据资源管理器的 plot_missing() 函数中更改颜色和波段标签
- java - 如何使用 split() 分割一条线
- python - 表单不验证并且没有错误。包含 CSRF 令牌
- python - 就地改变声波:频率和幅度
- php - 检查用户名是否可用于庞大数据集的最快方法是什么?