使用Python Pandas读取excel并隔离列/行以绘制

时间:2017-10-17 14:18:12

标签: python excel pandas matplotlib

我正在使用Python pandas read_excel来创建直方图或线图。我想在整个文件中阅读。这是一个大文件,我只想在其上绘制某些值。我知道如何在read_excel中使用skiprows和parse_cols,但如果我这样做,它就不会读取我需要用于轴标签的文件的一部分。我也不知道如何告诉它绘制我想要的x值以及我想要的y值。继承人我所拥有的:

df=pd.read_excel('JanRain.xlsx',parse_cols="C:BD")

years=df[0]
precip=df[31:32]
df.plot.bar()

我希望x轴是excel文件的第1行(年),我希望条形图中的每个条形图都是excel文件第31行的值。我不知道如何隔离这个。使用pandas然后使用matplotlib绘图会更容易吗?

以下是excel文件的示例。第一行是年,第二列是月份的日期(此文件仅用于1个月:

Here is a sample of the excel file. The first row is years and the second column is days of the month (this file is only for 1 month

1 个答案:

答案 0 :(得分:3)

这里我将如何绘制大数据帧的第31行中的数据,将第0行设置为x轴。 (更新的答案)

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

创建一个包含32行和10列

的随机数组
df = pd.DataFrame(np.random.rand(320).reshape(32,10), columns=range(64,74), index=range(1,33))
df.to_excel(r"D:\data\data.xlsx")

只读取您想要使用的列和行" parse_cols"和" skiprows。"此示例中的第一列是数据框索引。

# load desired columns and rows into a dataframe
# in this method, I firse make a list of all skipped_rows
desired_cols = [0] + list(range(2,9))
skipped_rows = list(range(1,33))
skipped_rows.remove(31)
df = pd.read_excel(r"D:\data\data.xlsx", index_col=0, parse_cols=desired_cols, skiprows=skipped_rows)

目前,这会产生一个只有一行的数据框。

      65        66       67        68        69        70        71
31  0.310933  0.606858  0.12442  0.988441  0.821966  0.213625  0.254897

仅隔离您要绘制的行,给出一个带有原始列标题的pandas.Series作为索引

ser = df.loc[31, :]

绘制系列。

fig, ax = plt.subplots()
ser.plot(ax=ax)
ax.set_xlabel("year")
ax.set_ylabel("precipitation")

enter image description here

fig, ax = plt.subplots()
ser.plot(kind="bar", ax=ax)
ax.set_xlabel("year")
ax.set_ylabel("precipitation")

enter image description here