Построение нескольких столбцов из другого фрейма данных - PullRequest
0 голосов
/ 23 октября 2018

Я пытался построить сюжет на python, но я столкнулся с проблемой синтаксиса.Я гуглил, но не смог найти что-то подходящее.

У меня три фрейма данных.Данные в первом кадре данных - это что-то вроде прикрепленной картинки.

enter image description here

У меня есть еще два кадра данных, каждый из которых содержит один столбец.Один имеет макс.температура в течение последних нескольких лет, как показано ниже, а другой имеет мин.Хотя этот второй DF не имеет столбца с названием города, как у DF1, максимальная температура в DF2 предназначена для названий городов, упомянутых в самом DF1.

enter image description here

Кадр данных 3.

enter image description here

Я хотел бысоздайте линейный график, на котором ось x должна иметь название города, а ось Y должна быть такой, чтобы в нее можно было помещать Temp из DF1, Max Temp из DF2 и Min Temp из DF3.Я хочу объединить все три линейных графика в одном графике.

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

pandas.DataFrame имеет встроенный метод сюжет .Если у вас есть один фрейм данных, вы можете просто сделать что-то вроде:

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'])))
0 голосов
/ 23 октября 2018

Вы можете сделать что-то вроде этого:

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]

...