数据预处理
数据预处理是数据分析的基础,直接影响后续分析结果的准确性。
- 去重操作:使用drop_duplicates(inplace = False)可以去除数据中的重复记录,再通过reset_index(inplace = True,drop = True)重置索引,保证数据的唯一性和整洁性。
- 缺失值处理:通过data.loc[data['sale_count'].isnull()]可定位某列的缺失值记录,若要查看最后一行缺失值记录,可使用tail(1)方法,即data.loc[data['sale_count'].isnull()].tail(1)。
数据分组与筛选
合理的分组与筛选能帮助聚焦关键数据。
- 按条件筛选:可根据不同条件筛选出所需数据子集,如按照平均单价区间筛选品牌,A=avg_price[(avg_price <= 100) & (avg_price > 0) ].index就筛选出了平均单价在 0-100 元区间的品牌索引。
- 分组聚合:使用groupby进行分组后,结合聚合函数可实现数据汇总,例如sum_sale=data.groupby('店名')['销售额'].sum()计算了各品牌的总销售额。
数据可视化
可视化能直观呈现数据特征和规律,常用的图表及相关操作如下:
- 饼图:适合展示各部分占总体的比例关系。在绘制不同价格区间品牌销售额占比饼图时,需将各区间数据连接起来,由于新版本 pandas 中Series.append()方法已移除,需用pd.concat()替代,如sum_sale_byprice = pd.concat([sum_sale[A].sort_values(), sum_sale[B].sort_values(), sum_sale[C].sort_values(), sum_sale[D].sort_values()])。同时,可通过设置labels、colors、autopct等参数美化图表。
- 条形图:适用于比较不同类别数据的大小。绘制不同价格区间平均店铺销售额条形图时,使用plt.bar()函数,通过设置x轴标签、标题、颜色等参数,使图表更清晰易懂,如plt.bar('均价0-100元',np.mean(sum_sale[A]),color = 'grey')。
- 子图绘制:使用plt.subplot()可在同一画布上绘制多个子图,便于对比分析,如plt.subplot(1,2,1)和plt.subplot(1,2,2)分别绘制左右两个子图。
- 图表优化:可通过plt.figure(figsize = (16,8))设置画布大小,plt.tick_params(labelsize=10)调整刻度标签大小,plt.tight_layout()自动调整子图布局,plt.title()和plt.ylabel()添加标题和坐标轴标签等,提升图表的可读性。
常见问题及解决方法
- 方法过时问题:如遇到 "'Series' object has no attribute 'append'" 错误,是因为新版本 pandas 移除了append()方法,改用pd.concat()来连接多个 Series。
- 区间定义优化:对于价格区间的定义,可使用pd.cut()函数使代码更简洁,如price_categories = pd.cut(avg_price, bins=[0, 100, 200, 300, float('inf')], labels=['0-100元', '100-200元', '200-300元', '300元以上'])。
- 图表显示问题:当饼图中品牌数量较多时,可能出现标签重叠,可考虑只显示占比较大的品牌,将小品牌合并为 "其他" 类别。