如何用Python找出purchases.csv中购物量最少与最多的月份?
找出2020年购物量最多和最少的月份
你之前用Counter(dataset['date'])统计的是具体日期的购物次数,不是月份的汇总,所以没法直接得到月份维度的最值。用Pandas的日期分组功能可以高效解决这个问题,以下是修正后的代码:
import pandas as pd df = pd.read_csv('purchases.csv') # 转换日期格式并筛选2020年数据 df['date'] = pd.to_datetime(df['date']) dataset = df[df['date'].dt.year == 2020] # 按月份分组,统计每个月的购物次数 monthly_purchases = dataset.groupby(dataset['date'].dt.month).size() # 获取购物量最多/最少的月份及对应次数 max_month = monthly_purchases.idxmax() max_count = monthly_purchases.max() min_month = monthly_purchases.idxmin() min_count = monthly_purchases.min() print(f"购物量最多的月份:{max_month}月,次数:{max_count}") print(f"购物量最少的月份:{min_month}月,次数:{min_count}")
关键步骤说明:
dataset['date'].dt.month:将日期字段转换为对应的月份数字(1-12)groupby(...).size():按月份分组后,统计每组的记录总数(即该月的购物次数)idxmax()/idxmin():返回最大值/最小值对应的月份;max()/min()返回具体的购物次数
如果需要显示中文月份名称,可以添加以下转换步骤:
# 将月份数字映射为中文名称 month_map = {1:'一月',2:'二月',3:'三月',4:'四月',5:'五月',6:'六月', 7:'七月',8:'八月',9:'九月',10:'十月',11:'十一月',12:'十二月'} monthly_purchases.index = monthly_purchases.index.map(month_map) # 重新获取最值 max_month = monthly_purchases.idxmax() min_month = monthly_purchases.idxmin() print(f"购物量最多的月份:{max_month},次数:{monthly_purchases.loc[max_month]}") print(f"购物量最少的月份:{min_month},次数:{monthly_purchases.loc[min_month]}")
内容的提问来源于stack exchange,提问作者reallilpunch
相关产品推荐
相关产品推荐

