Python3.6下利用Pandas实现公交号城市出现占比的动态计算求助
解决方案
步骤说明
通过pandas的交叉表功能可以快速实现需求,核心逻辑是:先统计每个公交编号在各城市的出现次数,再计算该次数占对应公交编号总出现次数的百分比。
代码实现
import pandas as pd # 构造示例DataFrame data = { 'Bus_no.': [3412, 7658, 3412, 5516, 7658, 3412], 'City': ['Kolkata', 'Nagpur', 'Mumbai', 'Kolkata', 'Chennai', 'Mumbai'] } df = pd.DataFrame(data) # 计算每个Bus_no.在各城市的占比百分比 percentage_df = pd.crosstab(df['Bus_no.'], df['City'], normalize='index') * 100 # 格式化输出,保留两位小数 percentage_df = percentage_df.round(2) print(percentage_df)
输出结果
| Bus_no. | Chennai | Kolkata | Mumbai | Nagpur |
|---|---|---|---|---|
| 3412 | 0.00 | 33.33 | 66.67 | 0.00 |
| 5516 | 0.00 | 100.00 | 0.00 | 0.00 |
| 7658 | 50.00 | 0.00 | 0.00 | 50.00 |
代码解释
pd.crosstab:生成公交编号与城市的交叉统计表,normalize='index'参数指定按行(即每个公交编号)做归一化计算,直接得到占比- 乘以100将占比转换为百分比,
round(2)保留两位小数让结果更直观
内容的提问来源于stack exchange,提问作者CoderG
相关产品推荐
相关产品推荐

