2016-08-08 4 views
0

исходя из следующих данных CSV, загруженных в рамку панды данных ...Простого способ построения временных рядов с реальными датами, используя панда

Buchung;Betrag;Saldo 
27.06.2016;-1.000,00;42.374,95 
02.06.2016;500,00;43.374,95 
01.06.2016;-1.000,00;42.874,95 
13.05.2016;-500,00;43.874,95 
02.05.2016;500,00;44.374,95 
04.04.2016;500,00;43.874,95 
02.03.2016;500,00;43.374,95 
10.02.2016;1.000,00;42.874,95 
02.02.2016;500,00;41.874,95 
01.02.2016;1.000,00;41.374,95 
04.01.2016;300,00;40.374,95 
30.12.2015;234,54;40.074,95 
02.12.2015;300,00;39.840,41 
02.11.2015;300,00;39.540,41 
08.10.2015;1.000,00;39.240,41 
02.10.2015;300,00;38.240,41 
02.09.2015;300,00;37.940,41 
31.08.2015;2.000,00;37.640,41 

... Я хотел бы интуитивный способ построить кривое время серии, датированные датами в столбце «Buchung» и денежными значениями в колонке «Saldo».

Я попытался

seaborn.tsplot(data=data, time="Buchung", value="Saldo") 

, который дает

ValueError: could not convert string to float: '31.08.2015' 

Что такое простой способ чтения даты и значения и построить временные ряды? Я предполагаю, что это такая общая проблема, что должно быть трехлинейное решение.

+0

Не используйте PNG для данных и кода. Сделайте небольшое усилие и введите его. – Kartik

ответ

3

Вам нужно преобразовать столбец даты в правильном формате:

data['Buchung'] = pd.to_datetime(data['Buchung'], format='%d.%m.%Y') 

Теперь ваш участок будет работать.


Хотя вы не спрашивали, я думаю, вы также столкнетесь с подобной проблемой, потому что ваши номера (в 'Betrag' и 'Saldo'), как представляется, строка, а также. Поэтому я рекомендую вам преобразовать их в числовое значение перед построением графика. Вот как вы можете сделать это с помощью простых манипуляций со строками:

data["Saldo"] = data["Saldo"].str.replace('.', '').str.replace(',', '.') 
data["Betrag"] = data["Betrag"].str.replace('.', '').str.replace(',', '.') 

Или установить locale:

import locale 
# The data appears to be in a European format, German locale might 
# fit. Try this on Windows machine: 
locale.setlocale(locale.LC_ALL, 'de') 
data['Betrag'] = data['Betrag'].apply(locale.atof) 
data['Saldo'] = data['Saldo'].apply(locale.atof) 
# This will reset the locale to system default 
locale.setlocale(locale.LC_ALL, '') 

На машине Ubuntu, следуйте this answer. Если приведенный выше код не работает на компьютере с Windows, попробуйте locale.locale_alias, чтобы просмотреть все доступные локали и выбрать имя из этого.


Выход

Использование matplotlib, так как я не могу установить Сиборн на машине я работаю с.

from matplotlib import pyplot as plt 

plt.plot(data['Buchung'], data['Saldo'], '-') 
_ = plt.xticks(rotation=45) 

The Plot

Примечание: это было произведено с использованием метода locale. Следовательно, месячные имена находятся на немецком языке.

+0

Пока нет. Преобразование даты выполняется, но значения валюты в «Салдо» также необходимо преобразовать, если я правильно интерпретирую сообщение об ошибке. – clstaudt

+0

Работал над этим, см. Редактирование. Добро пожаловать! – Kartik

+0

https://docs.python.org/3.5/library/locale.html#locale.atof Вам понадобится 'locale.atof' внутри. Извините за отсутствие этого. – Kartik

Смежные вопросы