При создании графика в pandas python я получаю сообщение об ошибке: EOL - PullRequest
0 голосов
/ 18 февраля 2020

df

import pandas as pd
df = pd.DataFrame({
    'SKU': ['BIKES','MATS', 'BLANKETS', 'CREAMS'],'Col1': [1,3,6,10],'Col2': [4,5, 6,16],'Month':[1,2,3,4],'Year':['2015','2010','2011','2012']})

Код пробовал, который не работает

    import matplotlib.pyplot as plt

#Visualisations

fig, ax = plt.subplots()
for col in ['Col1', 'Col2']:
    ax.plot(df[col], label=col)
ax.legend(loc="best")
ax.tick_params(axis="x", rotation=30)

Мне нужны тикеры для месяцев и значения для лет. Но прежде чем я смогу продолжить работу с тикерами и т. Д. c., Я получаю сообщение об ошибке:

File "<ipython-input-14-136f7818ccc7>", line 6
    for col in ['Col1', 'Col2']:
                                ^
SyntaxError: EOL while scanning string literal

Ответы [ 3 ]

1 голос
/ 18 февраля 2020

Вы открываете указанный тип c апострофов и никогда не закрываете его:

для столбца в ["Col1", "Col2"]:

Необходимо заменить на:

for col in ["Col1","Col2"]:
0 голосов
/ 18 февраля 2020
for col in ['Col1', 'Col2']:
    ax.plot(df['Date'], df[col], label=col) 
0 голосов
/ 18 февраля 2020

Вы получаете ошибку, потому что вы не указали даты в для l oop. На какие даты вам нужен график?

import matplotlib.pyplot as plt
from matplotlib import dates as mdates

# The new column to be used as x axis
df['Date'] = pd.to_datetime(df[['Year', 'Month']].assign(Day=1))

# Plot the data
fig, ax = plt.subplots(figsize=(10, 2))
for col in ['Col1', 'Col2']:
    ax.plot(df['Date'], df[col], label=col)  #Note I have inserted df['Date'] before df[col] in the code
ax.legend(loc="best")
ax.tick_params(axis="x", rotation=30)

Добавление тикеров в соответствии с вашими требованиями во втором редактировании:

years = mdates.YearLocator()    # only print label for the years
months = mdates.MonthLocator()  # mark months as ticks
years_fmt = mdates.DateFormatter('%Y')

ax.xaxis.set_major_locator(years)
ax.xaxis.set_minor_locator(months)
ax.xaxis.set_major_formatter(years_fmt)

ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...