python数据分析简单案例--数据统计(4)
一:任务:统计各国家男性、女性心理健康数据分布
(1)首先我们来观察下这个数据表
(2)代码如下:
(3)统计的数据表如下:
二:具体代码:
# -*- coding: utf-8 -*-
import csv
# 数据集路径
data_path = 'G:\BaiduDownload\python\进阶python数据\第一讲codes\codes\lect01_proj\survey.csv'
def run_main():
male_set = {'male', 'm'} # “男性”可能的取值
female_set = {'female', 'f'} # “女性”可能的取值
result_dict = {}
with open(data_path, 'r', newline='') as csvfile:
rows = csv.reader(csvfile)
for i, row in enumerate(rows): #enumerate 返回循环次数i 和里面的值row
if i == 0:
# 跳过第一行表头数据
continue
if i % 50 == 0:
print('正在处理第{}行数据...'.format(i))
# 性别数据
gender_val = row[2] #性别数据是第2列
country_val = row[3] #国家数据是第3列
# 去掉可能存在的空格
gender_val = gender_val.replace(' ', ' ')
# 转换为小写
gender_val = gender_val.lower()
# 判断“国家”是否已经存在
if country_val not in result_dict:
# 如果不存在,初始化数据
result_dict[country_val] = [0, 0]
# 判断性别
if gender_val in female_set:
# 女性
result_dict[country_val][0] += 1
elif gender_val in male_set:
# 男性
result_dict[country_val][1] += 1
else:
# 噪声数据,不做处理
pass
# 将结果写入文件
with open('G:\BaiduDownload\python\进阶python数据\第一讲codes\codes\lect01_proj\gender_country.csv', 'w', newline='', encoding='utf-16') as csvfile:
csvwriter = csv.writer(csvfile, delimiter=',')
# 写入表头
csvwriter.writerow(['国家', '男性', '女性'])
# 写入统计结果
for k, v in list(result_dict.items()):
csvwriter.writerow([k, v[0], v[1]])
if __name__ == '__main__':
run_main()