Ваш порт должен быть занят каким-либо другим процессом. Таким образом, вы можете загрузить TCPView на https://technet.microsoft.com/en-us/sysinternals/bb897437 и убить процесс для используемого порта.
Если вы не узнайте свой порт, дважды щелкните на сервере, который не запускается, и нажмите «Открыть страницу свойств сервера» и нажмите на стеклянную рыбку слева. Здесь вы найдете порты.
Вам придется извлекать данные для каждого города отдельно, отфильтровывая фрейм данных.
# df = your dataframe with all the data
towns = ['A', 'B', 'C']
for town in towns:
town_df = df[df['town'] == town]
plt.plot(town_df['week'], town_df['price'], label=town)
plt.legend()
plt.xlabel('Week')
plt.ylabel('Price')
plt.title('Price Graph')
plt.show()
Вывод:
Я сделал это для графика цен, вы можете аналогичным образом создать график с продажами в качестве оси Y, используя те же шаги
Это один из способов сделать это, используя groupby
для формирования групп на основе Town
, а затем нанести на график price
и sales
, используя вторичную ось у
fig, ax = plt.subplots(figsize=(8, 6))
df_group = data.groupby('Town')['week','price','sales']
ylabels = ['price', 'sales']
colors =['r', 'g', 'b']
for i, key in enumerate(df_group.groups.keys()):
df_group.get_group(key).plot('week', 'price', color=colors[i], ax=ax, label=key)
df_group.get_group(key).plot('week', 'sales', color=colors[i], linestyle='--', secondary_y=True, ax=ax)
handles,labels = ax.get_legend_handles_labels()
legends = ax.legend()
legends.remove()
plt.legend(handles, labels)
ax1.set_ylabel('Price')
ax2.set_ylabel('Sales')
Вы можете наносить развернутые данные непосредственно на панд.
ax = df.pivot("week", "Town", "price").plot()
ax2 = df.pivot("week", "Town", "sales").plot(secondary_y=True, ax=ax)
Полный пример:
import io
import pandas as pd
import matplotlib.pyplot as plt
u = """Town week price sales
A 1 1.1 101
A 2 1.2 303
A 3 1.3 234
B 1 1.2 987
B 2 1.5 213
B 3 3.9 423
C 1 2.4 129
C 2 1.3 238
C 3 1.3 132"""
df = pd.read_csv(io.StringIO(u), delim_whitespace=True)
ax = df.pivot("week", "Town", "price").plot(linestyle="--", legend=False)
ax.set_prop_cycle(None)
ax2 = df.pivot("week", "Town", "sales").plot(secondary_y=True, ax=ax, legend=False)
ax.set_ylabel('Price')
ax2.set_ylabel('Sales')
ax2.legend()
plt.show()