Python, как преобразовать один столбец в dataframe к дате, tye и plot

1

У меня есть один dataframe df, как показано ниже:

df = pd.DataFrame({'date': [20121231,20130102, 20130105, 20130106, 20130107, 20130108],'price': [25, 163, 235, 36, 40, 82]})

Как сделать df['date'] качестве date type и сделать 'price' как y-label и 'date' как x-label?

Большое спасибо.

Теги:
dataframe
date
plot

3 ответа

3
Лучший ответ

Используйте to_datetime с параметром format, проверьте http://strftime.org/:

df['date'] = pd.to_datetime(df['date'], format='%Y%m%d')
print (df)
        date  price
0 2012-12-31     25
1 2013-01-02    163
2 2013-01-05    235
3 2013-01-06     36
4 2013-01-07     40
5 2013-01-08     82

А потом plot:

df.plot(x='date', y='price')
  • 0
    Отлично, большое спасибо.
  • 0
    @Hong - Добро пожаловать!
1
import pandas as pd
%matplotlib inline
df = pd.DataFrame({'date': [20121231,20130102, 20130105, 20130106, 20130107, 
                            20130108],'price': [25, 163, 235, 36, 40, 82]})
df['date'] = pd.to_datetime(df['date'], format='%Y%m%d')

df.plot(x='date', y='price')
1

С помощью pandas вы можете напрямую преобразовать столбец datetime тип datetime. И тогда вы можете matplotlib с matplotlib. Взгляните на этот ответ, а также на этот.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt 
import matplotlib.dates as dates

df = pd.DataFrame(
    {'date': [20121231, 20130102, 20130105, 20130106, 20130107, 20130108],
    'price': [25, 163, 235, 36, 40, 82]
})

fig, ax = plt.subplots()

# Date plot with matplotlib
ax.plot_date(
    pd.to_datetime(df["date"], format="%Y%m%d"),
    df["price"],
    'v-'
)

# Days and months and the horizontal locators
ax.xaxis.set_minor_locator(dates.DayLocator())
ax.xaxis.set_minor_formatter(dates.DateFormatter('%d\n%a'))
ax.xaxis.set_major_locator(dates.MonthLocator())
ax.xaxis.set_major_formatter(dates.DateFormatter('\n\n\n%b\n%Y'))

ax.xaxis.grid(True, which="minor")
ax.yaxis.grid()
plt.tight_layout()
plt.show()

Результат:

Изображение 174551

Ещё вопросы

Сообщество Overcoder
Наверх
Меню