从不同数据框中绘制多个列

时间:2018-10-23 16:14:26

标签: python pandas python-3.6

我一直试图在python中进行绘图,但是我在语法方面面临挑战。我已经用Google搜索,但是找不到合适的东西。

我有三个数据帧。第一个数据框中的数据类似于附件中的图片。

enter image description here

我还有两个数据帧,每个数据帧都包含一列。一个最大。过去几年的温度如下图所示,而另一个则有最小值。尽管第二个DF没有DF1的城市名称列,但DF2中的最高温度是DF1本身提到的城市名称。

enter image description here

数据框3。

enter image description here

我想制作一个线图,其中x轴应该具有City名称,Y轴必须这样才能容纳DF1中的Temp,DF2中的Max Temp和DF3中的Min Temp。我想将所有三线图合并到同一张图中。

2 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

import pandas as pd
import matplotlib.pyplot as plt

# create data:
df1 = pd.DataFrame({"City Name": ["Toronto", "NYC"],
                    "Temp": [10, 20],
                    "Rainfall": [100, 232]})

df2 = pd.DataFrame({"Max Temp": [20, 25]})

df3 = pd.DataFrame({"Min Temp": [0, -10]})

# concatenate all data into one dataframe:
df = pd.concat([df1, df2, df3], axis=1)

# drop rainfall column from data:
df.drop("Rainfall", 1)

# change index to city names:
df.index = df["City Name"]

# drop city name column from data:
df.drop("City Name", 1)

plt.plot(df)
plt.legend(df.columns)

这将为您提供:

Plot1]

答案 1 :(得分:0)

pandas.DataFrame具有内置方法plot。如果只有一个数据框,则可以执行以下操作:

df.plot('City Name', 'Max Temp')

如果具有相同长度的不同数据帧,则可以将它们附加pd.concat(还有其他几个选项)。我也不知道原因,但是df.plot没有显示x轴:您可以通过添加plt.ticks来纠正它。代码示例:

df1 = pd.DataFrame({'cityname': ['A', 'B', 'C']}, dtype='U4')
df2 = pd.DataFrame({'Tmax': [10, 20, 30]})
df3 = pd.DataFrame({'Tmin': [10, 20, 30]})
#linestyle dashed, color green (default is fill blue)
pd.concat([df1, df2, df3], axis=1).plot('cityname', 'Tmax', linestyle='--', color='g')
plt.xticks(*zip(*enumerate(df1['cityname'])))