我有一个包含多个工作表的excel文件。每个工作表都包含价格和价格。特定月份的单个物料代码的库存数据。
例如......
sheetname = 201509
code price inventory
5001 5 92
5002 7 50
5003 6 65
sheetname = 201508
code price inventory
5001 8 60
5002 10 51
5003 6 61
使用pandas数据框,如何按时间和项目代码组织导入此数据的最佳方式。 我需要这个数据框,以便最终能够绘制项目代码5001的价格和库存变化。
感谢您的帮助。我还是python / pandas的新手。 感谢。
我的解决方案...... 这是我发现问题的解决方案。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
D201509 = pd.read_excel('ExampleSpreadsheet.xlsx', sheetname='201509', index_col='Code')
D201508 = pd.read_excel('ExampleSpreadsheet.xlsx', sheetname='201508', index_col='Code')
D201507 = pd.read_excel('ExampleSpreadsheet.xlsx', sheetname='201507', index_col='Code')
D201506 = pd.read_excel('ExampleSpreadsheet.xlsx', sheetname='201506', index_col='Code')
D201505 = pd.read_excel('ExampleSpreadsheet.xlsx', sheetname='201505', index_col='Code')
total = pd.concat(dict(D201509=D201509, D201508=D201508, D201507=D201507, D201506=D201506, D201505=D201505), axis=1)
total.head()
这将很好地生成具有分层列的数据帧..
现在我的新问题是你如何用这个数据框绘制每个代码#的价格变化? 我想看到5行(5001,5002,5003,5004,5005),x轴是时间(D201505,D201506等),y轴是价格值。
感谢。
答案 0 :(得分:2)
这会将您的数据放入数据框并在5001
上执行散点图import pandas as pd
import matplotlib.pyplot as plt
import xlrd
file = r'C:\dickster\data.xlsx'
list_dfs = []
xls = xlrd.open_workbook(file, on_demand=True)
for sheet_name in xls.sheet_names():
df = pd.read_excel(file,sheet_name)
df['time'] = sheet_name
list_dfs.append(df)
dfs = pd.concat(list_dfs,axis=0)
dfs = dfs.sort(['time','code'])
看起来像:
code price inventory time
0 5001 8 60 201508
1 5002 10 51 201508
2 5003 6 61 201508
0 5001 5 92 201509
1 5002 7 50 201509
2 5003 6 65 201509
现在5001的情节:价格v库存:
dfs[dfs['code']==5001].plot(x='price',y='inventory',kind='scatter')
plt.show()
产生: