Как составить график активности по часам на основе набора данных в ggplot? - PullRequest
0 голосов
/ 25 мая 2019

Я пытаюсь создать код, который будет отображать количество записей в MTA за час.У меня есть набор данных CSV записей и часы, когда они происходят.Я сократил набор данных до фрейма данных Pandas только с записями, и я добавил столбец для «Часа», чтобы показать время, когда записи происходят.

Однако при построении графика я продолжаю получать«ValueError: Значение истинности Series неоднозначно. Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().»и мне неясно, что это значит или почему это происходит.

Я попытался настроить столбец «Час» на дату и время;Я попытался использовать индекс вместо столбца «Час» в кадре данных.

from ggplot import *
import pandas as pd

turnstile_weather = pd.read_csv('/home/pi/Documents/Data analysis/turnstile_data_master_with_weather.csv')

def plot_weather_data(turnstile_weather):
    entries_by_hour = pd.DataFrame(turnstile_weather['ENTRIESn_hourly'] \
        .groupby(turnstile_weather['Hour']).sum())
    entries_by_hour['Hour'] = set(turnstile_weather['Hour'])
    plot = ggplot(entries_by_hour, \
        aes(entries_by_hour['Hour'], entries_by_hour['ENTRIESn_hourly'])) \
        + geom_line()
    print(plot)

plot_weather_data(turnstile_weather)

Я ожидаю получить линейный график с часами по оси X и записями по часам как Y-ось, но я получаю ошибку вместо:

ValueError                                Traceback (most recent call last)
<ipython-input-9-3cf39740bb64> in <module>
     10     print(plot)
     11 
---> 12 plot_weather_data(turnstile_weather)

<ipython-input-9-3cf39740bb64> in plot_weather_data(turnstile_weather)
      7     entries_by_hour = pd.DataFrame(turnstile_weather['ENTRIESn_hourly'].groupby(turnstile_weather['Hour']).sum())
      8     entries_by_hour['Hour'] = set(turnstile_weather['Hour'])
----> 9     plot = ggplot(entries_by_hour, aes(entries_by_hour['Hour'], entries_by_hour['ENTRIESn_hourly'])) + geom_line()
     10     print(plot)
     11 

/usr/local/lib/python3.5/dist-packages/ggplot/ggplot.py in __init__(self, aesthetics, data)
     53         self._aes = aesthetics
     54         self.data = data.copy()
---> 55         self._handle_index()
     56         self.data = self._aes._evaluate_expressions(self.data)
     57         self.data = self._aes.handle_identity_values(self.data)

/usr/local/lib/python3.5/dist-packages/ggplot/ggplot.py in _handle_index(self)
    132 
    133     def _handle_index(self):
--> 134         if '__index__' in self._aes.values():
    135             self.data['__index__'] = self.data.index
    136 

/usr/lib/python3.5/_collections_abc.py in __contains__(self, value)
    688     def __contains__(self, value):
    689         for key in self._mapping:
--> 690             if value == self._mapping[key]:
    691                 return True
    692         return False

~/.local/lib/python3.5/site-packages/pandas/core/generic.py in __nonzero__(self)
   1476         raise ValueError("The truth value of a {0} is ambiguous. "
   1477                          "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
-> 1478                          .format(self.__class__.__name__))
   1479 
   1480     __bool__ = __nonzero__

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
...