Pandas datetime64 проблема (datetime вводит скачки в данных) - PullRequest
0 голосов
/ 03 мая 2020

Это мой первый вопрос по stackoverflow, поэтому будьте добры :) Я работаю с импортированными CSV-файлами и pandas, и мне очень понравились возможности pandas datetime для работы и фильтрации данных. Но у меня есть серьезные проблемы с аккуратным отображением данных при использовании дат в качестве datetime64. Либо при использовании pandas участков или участков морского побережья. мой CSV выглядит следующим образом:

    date time   Flux_ConNT_C    Flux_ConB1  Flux_ConB2  Flux_ConB3  Flux_ConB4  Flux_ConB4
0   01.01.2015 00:30    2.552032129 2.193558665 1.0093326   1.013124869 1.159512896 1.159512896

1   01.01.2015 01:00    2.553308464 2.195533756 1.01003938  1.013935693 1.160672989 1.160672989

2   01.01.2015 01:30    2.554585438 2.197510626 1.010746655 1.014747166 1.161834243 1.161834243

3   01.01.2015 02:00    2.55586305  2.199489276 1.011454426 1.015559289 1.162996658 1.162996658

4   01.01.2015 02:30    2.557141301 2.201469707 1.012162692 1.016372061 1.164160236 1.164160236

когда я строю данные с

df.plot(figsize=(15,8))

мой вывод правильный вывод

но когда я измените столбец «дата-время» на «datetime64» с помощью

df['date time'] = pd.to_datetime(df['date time'])

и используйте тот же код для построения графика, данные наносятся с этими пиками и их нельзя использовать неверный вывод

Кажется, есть проблема с matplotlib, но я не могу найти ничего, кроме как поставить register_matplotlib_converters() перед сюжетом, который ничего не меняет. Я работаю с Spyder IDE и Python 3.7, и все библиотеки обновлены. Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 03 мая 2020

Ваша проблема не чудо, она просто не воспроизводима.

  1. Вы уверены, что у вашего csv нет заголовка для первого столбца индекса 0..4?
  2. Вы уверены, что в столбце csv 8 есть копия столбца 7?
  3. Как вы на самом деле импортировали этот csv и создали свой фрейм данных?
  4. Первый график работает только после замены индекса диапазона 0 ..4 по столбцу «дата / время». Какие еще преобразования вы применили к кадру данных перед вызовом метода plot?
  5. Ваше преобразование to_datetime работает только для столбца, а не для индекса. Почему бы вам не поделиться всем кодом, который вы использовали?
  6. На 2 графиках первые 5 строк не отличаются. Почему бы вам не поделиться строками данных, которые на самом деле отличаются на 2 графиках?

Я воздаю вам должное за попытку правильно сформулировать проблему. К сожалению, вы пропустили важную информацию. Основываясь на ограниченной информации, которую вы демонстрируете здесь, проблем нет вообще.

Чтобы пояснить: вы заметили, что это не связано с преобразованием datetime64 [ns], а с чем-то, вероятно, очень просто, что вы не считаете достаточно важным, чтобы поделиться с нами.

Взгляните на Как создать минимальный воспроизводимый пример . Идея такова: когда вы сможете подготовить свою проблему воспроизводимым способом, вы, вероятно, сможете решить ее самостоятельно.

...