график год-месяц-число по сравнению с весом

ссылки на вопрос по стековому потоку Я новичок в Python и попробовал программу, указанную в ссылках, однако я получаю указанную ниже ошибку. Мне здесь что-то не хватает? Не могли бы вы указать на меня?

………………………….

import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame({
          'weight':[1, 2, 3, 4],
          'date':['2011-05-01', '2013-10-10', '2015-12-17', '2017-10-29']
          })
df['date'] = pd.to_datetime(df['date'])

df1 = df.groupby(df['date'].dt.to_period('M')).sum()

df1 = df1.resample('M').asfreq().fillna(0)

plt.figure();

df1.plot(x='date', y='weight', kind='bar')


.......................................... Traceback (most recent call last):

File "/PycharmProjects/hellopython/hello_world", line 24, in

df1.plot(x='date', y='weight', kind='bar')
File "\PycharmProjects\hellopython\venv\lib\site-

packages\pandas\plotting_core.py", line 920, in call

elif not isinstance(data[x], ABCSeries):
File "\PycharmProjects\hellopython\venv\lib\site-packages\pandas\core\frame.py", line 3024, in getitem

indexer = self.columns.get_loc(key)
File "\PycharmProjects\hellopython\venv\lib\site-

packages\pandas\core\indexes\base.py", line 3082, in get_loc

raise KeyError(key) from err
KeyError: 'date'

См. также:  Ошибка при добавлении ролей реакции в discord.py
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. ksi

    Два варианта

    Вариант 1

    Поскольку date является индексом, нам не нужно передавать оси x и y для построения графика. Спасибо @ Nk03 за предложение этой опции.

    Изменена строка ниже в существующем коде

    df1.plot(kind='bar')
    

    Код

    import matplotlib.pyplot as plt
    import pandas as pd
    
    df = pd.DataFrame({
              'weight':[1, 2, 3, 4],
              'date':['2011-05-01', '2013-10-10', '2015-12-17', '2017-10-29']
              })
    df['date'] = pd.to_datetime(df['date'])
    
    df1 = df.groupby(df['date'].dt.to_period('M')).sum()
    
    df1 = df1.resample('M').asfreq().fillna(0)
    
    plt.figure();
    
    df1.plot(kind='bar')
    

    Вариант 2 — сбросить индекс

    Добавлена ​​строка ниже к существующему коду

    df1 = df1.reset_index()
    

    Полный код

    import matplotlib.pyplot as plt
    import pandas as pd
    
    df = pd.DataFrame({
              'weight':[1, 2, 3, 4],
              'date':['2011-05-01', '2013-10-10', '2015-12-17', '2017-10-29']
              })
    df['date'] = pd.to_datetime(df['date'])
    
    df1 = df.groupby(df['date'].dt.to_period('M')).sum()
    
    df1 = df1.resample('M').asfreq().fillna(0)
    df1 = df1.reset_index()
    
    plt.figure();
    
    df1.plot(x='date', y='weight', kind='bar')
    

    Привет, большое спасибо. Он работает, но я просто попробовал это таким же образом, как Option2 df1.plot (x = ‘weight’, y = ‘date’, kind = ‘bar’) изменил x и y, и он выдает ошибку компилятора как TypeError (no числовые данные для построения графика) TypeError: нет числовых данных для построения графика. Здесь можно изменить x и y или не следует менять? Не могли бы вы поправить меня и в этом? Заранее спасибо. person ksi; 08.06.2021

    Если вы хотите отобразить нечисловые типы, такие как дата, по оси y, тогда plz посетить person ksi; 08.06.2021

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: