我的数据框:
import matplotlib.pyplot as plt
import pandas as pd
store_num = [2, 5, 7, 9, 11, 14, 16, 19, 23, 24]
store_location = ['Free Standing', 'Strip Mall', 'Strip Mall', 'Strip Mall', 'Strip Mall', 'Big Box', 'Strip Mall', 'Strip Mall', 'Big Box', 'Big Box']
sales = [870859, 365501, 581628, 522831, 336361, 352152, 543373, 628040, 414274, 302452]
df_copy_cat = pd.DataFrame({'store_num': store_num , 'store_location' : store_location ,'sales': sales})
我想使用子图制作EDA以显示最高的商店收入,最畅销的菜单等。 我创建以下代码,但结果显示2个图。 我在做什么错了?
plt.subplot(2,2,1)
df_copy_cat = df_copy[['store_num', 'sales', 'store_location']]
df_copy_cat = df_copy_cat.groupby(['store_num', 'store_location']).sales.sum()
df_copy_cat = df_copy_cat.reset_index().set_index('store_num')
df_copy_cat.sort_values(by = 'sales',ascending = False).plot(kind = 'bar')
plt.show()
还绑定了以下代码:
plt.subplot(2,2,1)
df_copy_cat.sort_values(by = 'sales',ascending = False).plot(kind = 'bar')
plt.subplot(2,2,2)
df_copy_cat.groupby('store_location').sales.sum().sort_values(ascending = False).plot(kind='bar')
plt.subplot(2,2,3)
county_sales.sort_values(ascending = False).plot(kind='bar')
plt.subplot(2,2,4)
best_seller.plot(kind='bar')
结果是:
答案 0 :(得分:0)
您使用熊猫的df.plot()
方法仅作一个图。因此,您不需要plt.subplot(2,2,1)
行。
另一方面,如果您想在一个图形中进行四个子图,则可以通过以下方式进行:
fig, ax = plt.subplots(2, 2)
df_copy_cat.sort_values(by = 'sales',ascending = False).plot(kind = 'bar', ax=ax[0, 0])
df_copy_cat.groupby('store_location').sales.sum().sort_values(ascending = False).plot(kind='bar', ax=ax[0, 1])
county_sales.sort_values(ascending = False).plot(kind='bar', ax=ax[1, 0])
best_seller.plot(kind='bar', ax=ax[1, 1])
请注意ax=...
参数是通过df.plot()
传递给matplotlib的。
很明显,pandas依赖于matplotlib的面向对象的界面,因此它比基于pyplot
的方法要好。