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()

阅读更多

没有更多推荐了,返回首页