Pandas在特定索引上组合了多个excel工作表

时间:2015-09-27 07:08:48

标签: python excel pandas

我有一个包含多个工作表的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()

这将很好地生成具有分层列的数据帧..

enter image description here

现在我的新问题是你如何用这个数据框绘制每个代码#的价格变化? 我想看到5行(5001,5002,5003,5004,5005),x轴是时间(D201505,D201506等),y轴是价格值。

感谢。

1 个答案:

答案 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()

产生:

enter image description here