import pandas as pd
# 假设这是创建DataFrame的代码,实际应用中数据可能从文件或数据库读取
data = {
'城市': ['北京', '上海', '广州', '深圳', '北京', '上海', '广州', '深圳', '北京', '上海', '广州', '深圳', '北京', '上海', '广州', '深圳'],
'年份': [2019, 2019, 2019, 2019, 2020, 2020, 2020, 2020, 2021, 2021, 2021, 2021, 2022, 2022, 2022, 2022],
'季度': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
'销售额': [100, 200, 150, 250, 120, 230, 170, 280, 140, 260, 190, 310, 160, 290, 210, 340]
}
df = pd.DataFrame(data)
# 思路1:筛选出一线城市的数据
first_tier_cities = ['北京', '上海', '广州', '深圳']
filtered_df = df[df['城市'].isin(first_tier_cities)]
# 思路2:筛选出2020 - 2022年的数据
filtered_df = filtered_df[(filtered_df['年份'] >= 2020) & (filtered_df['年份'] <= 2022)]
# 思路3:计算同比增长率,需要先对数据按城市和季度分组,然后移位计算同比
filtered_df.sort_values(by=['城市', '年份', '季度'], inplace=True)
filtered_df['同比增长率'] = filtered_df.groupby(['城市', '季度'])['销售额'].pct_change() * 100
# 思路4:筛选出同比增长超过10%的数据
result_df = filtered_df[filtered_df['同比增长率'] > 10]
# 输出结果
print(result_df)
- 数据准备:
- 这里使用字典创建了一个简单的DataFrame,实际中可能是从CSV文件、数据库等读取数据。
- 筛选一线城市:
- 使用
isin
方法筛选出城市
列中属于一线城市的数据。
- 筛选2020 - 2022年的数据:
- 使用布尔索引,通过
>=
和<=
运算符筛选出符合年份范围的数据。
- 计算同比增长率:
- 先对数据按
城市
、年份
和季度
排序。
- 使用
groupby
按城市
和季度
分组,然后使用pct_change
方法计算每个组内销售额的同比增长率,并乘以100转换为百分比形式。
- 筛选同比增长超过10%的数据:
- 再次使用布尔索引,筛选出
同比增长率
大于10的数据。
- 输出结果: