当前位置: 首页 > news >正文

统计和占比分析

## 问题1: 现在有一张 country_populartion 表,包含:id,country,city,popularation 字段,请使用 sql 和 Python 统计每个城市的人口占比,统计指定城市的人口占比?

sql

"SELECT
country,
city,
population,
ROUND(
(population * 100.0) / SUM(population) OVER(), 2
) AS percentage
FROM country_population
ORDER BY population DESC;
"

python

"import pandas as pd

# 假设 df 是从数据库读取的 DataFrame
# df = pd.read_sql("SELECT * FROM country_population", connection)

# 计算总人口
total_pop = df['population'].sum()

# 计算占比
df['percentage'] = (df['population'] / total_pop) * 100
df['percentage'] = df['percentage'].round(2) # 保留两位小数

print(df[['country', 'city', 'population', 'percentage']])

"

## 问题2.现在有一张 country_populartion 表,包含:id,country,city,popularation 字段,统计指定城市的人口占比?

sql

"-- 方案 A:将指定城市合并为一行计算总占比
SELECT
'Top_Cities' AS group_name,
SUM(population) AS total_pop,
ROUND(
(SUM(population) * 100.0) / (SELECT SUM(population) FROM country_population), 2
) AS percentage
FROM country_population
WHERE city IN ('北京', '上海', '深圳');

-- 方案 B:列出指定城市,并计算它们各自及合计的占比
SELECT
city,
population,
ROUND(
(population * 100.0) / (SELECT SUM(population) FROM country_population), 2
) AS percentage
FROM country_population
WHERE city IN ('北京', '上海', '深圳');

"

python

"

import pandas as pd

# 假设 df 是原始数据
# df = pd.read_sql("SELECT * FROM country_population", connection)

# 定义你感兴趣的指定城市列表
target_cities = ['北京', '上海', '深圳']

# 筛选出指定城市的数据
df_target = df[df['city'].isin(target_cities)].copy()

# 计算总人口(用于做分母)
total_population = df['population'].sum()

# 计算每个指定城市的占比
df_target['percentage'] = (df_target['population'] / total_population) * 100
df_target['percentage'] = df_target['percentage'].round(2)

# 如果你想计算这“几个城市”加起来的总占比:
combined_percentage = df_target['population'].sum() / total_population * 100
print(f"指定城市({target_cities})总人口占比: {combined_percentage:.2f}%")

# 显示各个城市的占比详情
print(df_target[['city', 'population', 'percentage']])

"

3.统计每个国家人口总数排名前二的城市

sql

"SELECT
country,
city,
population
FROM (
SELECT
country,
city,
population,
ROW_NUMBER() OVER (PARTITION BY country ORDER BY population DESC) AS rn
FROM country_population
WHERE population IS NOT NULL -- 排除空值
) ranked
WHERE rn <= 2
ORDER BY country, rn;
"

python

"import pandas as pd

# 假设 df 是从数据库读取的数据

# df = pd.read_sql("SELECT * FROM country_population", connection)

# 1. 数据清洗:去除人口为空的行

df = df.dropna(subset=['population'])

# 2. 按国家分组,组内按人口降序排序,并生成排名

df['rank'] = df.groupby('country')['population'].rank(method='first', ascending=False)

# 3. 筛选排名前2的城市

result = df[df['rank'] <= 2]

# 4. 选择需要展示的列并排序

result = result[['country', 'city', 'population', 'rank']].sort_values(['country', 'rank'])

print(result)

"

http://www.cnnetsun.cn/news/657901.html

相关文章:

  • PCIe-Common Packet Header Fields Example: Memory Read/Write
  • 科哥定制FunASR镜像解析|集成speech_ngram_lm_zh-cn提升中文识别准确率
  • Simple Clock:你的全能时间管理助手,告别混乱日程
  • 16.电子工程师地图
  • 终极流程图制作神器:Flowchart Fun从入门到精通指南
  • Axure RP中文界面改造实战:3分钟搞定全版本汉化配置
  • Qwen3-1.7B批量推理优化:一次处理千条请求的架构设计
  • Qwen3-Reranker-0.6B性能优化:让文本排序速度提升3倍
  • Blender到OGRE导出器:游戏开发的3D内容转换利器
  • IndexTTS-2-LLM实战:语音合成在盲人辅助中的应用
  • HY-MT1.8B显存不足怎么办?量化部署实战优化GPU利用率
  • 5分钟上手阿里中文语音识别,Seaco Paraformer镜像一键部署实测
  • 如何提升DeepSeek-R1响应速度?缓存机制优化技巧
  • 从零实现ESP32安全启动与esptool加密烧录
  • 通义千问3-14B部署失败?Ollama-webui双组件配置详解
  • 从口语到标准格式|使用FST ITN-ZH镜像实现精准中文ITN转换
  • YOLOv13+DeepSort实战:云端GPU 2小时跑通demo
  • 通义千问3-4B异常处理:常见错误日志分析与解决
  • Qwen2.5-0.5B-Instruct客服场景:多语言支持下的智能应答
  • Qwen3-VL-2B-Instruct微调准备:LoRA适配器部署指南
  • 快速精通MapleStory游戏资源编辑:Harepacker-resurrected终极使用指南
  • ESP32连接OneNet云平台实现多设备联动控制完整示例
  • cv_unet_image-matting是否支持中文界面?本地化体验优化建议
  • VibeThinker-1.5B省钱部署方案:低算力环境高效运行实战案例
  • Emotion2Vec+ Large情感得分分布图怎么理解?一文读懂
  • Open Interpreter强化学习实验:环境搭建与算法实现
  • 如何快速上手canvas-editor:面向新手的完整使用指南
  • USB2.0传输速度实战案例:模式切换效果分析
  • MediaGo:告别复杂抓包,一键搞定m3u8流媒体视频下载
  • 腾讯HY-MT1.5-1.8B教程:多模型协作翻译系统