Python之景区游客统计

82 阅读3分钟

景区游客统计

代码如下

方法一:

import csv

# 1.创建求和函数
def getTourist(place):
    total = 0 # 初始化为0,用于统计过去半年游客人数的总和
    for item in place:
        total += item
    return total
data_file = open("tourist_data.csv", "r")
all_data = csv.reader(data_file)

# 2.读取csv文件
with open("tourist_data.csv", "r", encoding="gbk") as file:
    # 整体数据
    all_data = csv.reader(file)
    for item in all_data:
        print(item)
    # 1.筛选出九寨沟景区的游客人数
    file.seek(0) # 将文件指针重新指向文件开头
    # jzg_data = [] # 定义一个空列表,用于存放九寨沟每日游客人数
    # for item in all_data:
    #     jzg_data.append(item[1])
    # #print(jzg_data)
    # # 将第一个元素剔除掉,还要将字符串转换为整数
    # jzg_data_str=jzg_data[1:]
    # print(jzg_data_str)
    # jzg_data = list(map(int,jzg_data_str))
    jzg_data = list(map(int, list(item[1] for item in all_data)[1:]))
    print(jzg_data)
    jzg_total = getTourist(jzg_data) # 九寨沟总人数
    print("该时期到九寨沟旅游的总人数是:",jzg_total)
    # 2.其它景点 张家界,香港,东部华侨城,上海迪士尼
    # 筛选出张家界景区的游客人数
    file.seek(0) # 将文件指针重新指向文件开头
    zjj_data = [] # 定义一个空列表,用于存放张家界每日游客人数
    for item in all_data:
        zjj_data.append(item[2])
    print(zjj_data)
    zjj_data_str=zjj_data[1:]
    zjj_data = list(map(int,zjj_data_str))
    print(zjj_data)
    zjj_total = getTourist(zjj_data)
    print("该时期到张家界旅游的总人数是:",zjj_total)

    # 筛选出香港景区的游客人数
    file.seek(0) # 将文件指针重新指向文件开头
    hk_data = [] # 定义一个空列表,用于存放香港每日游客人数
    for item in all_data:
        hk_data.append(item[3])
    print(hk_data)
    hk_data_str=hk_data[1:]
    hk_data = list(map(int,hk_data_str))
    print(hk_data)
    hk_total = getTourist(hk_data)
    print("该时期到香港旅游的总人数是:",hk_total)

    # 筛选出东部华侨城景区的游客人数
    file.seek(0) # 将文件指针重新指向文件开头
    dbhqc_data = [] # 定义一个空列表,用于存放东部华侨城每日游客人数
    for item in all_data:
        dbhqc_data.append(item[4])
    print(dbhqc_data)
    dbhqc_data_str=dbhqc_data[1:]
    dbhqc_data = list(map(int,dbhqc_data_str))
    print(dbhqc_data)
    dbhqc_total = getTourist(dbhqc_data)
    print("该时期到东部华侨城旅游的总人数是:",dbhqc_total)

    # 筛选出上海迪士尼景区的游客人数
    file.seek(0) # 将文件指针重新指向文件开头
    shdisney_data = [] # 定义一个空列表,用于存放上海迪士尼每日游客人数
    for item in all_data:
        shdisney_data.append(item[5])
    print(shdisney_data)
    shdisney_data_str=shdisney_data[1:]
    shdisney_data = list(map(int,shdisney_data_str))
    print(shdisney_data)
    shdisney_total = getTourist(shdisney_data)
    print("该时期到上海迪士尼旅游的总人数是:",shdisney_total)

方法二(numpy):

import numpy as np
# 1. 读取文件
(jzg_data, zjj_data, hk_data, dbhqc_data, disney_data) = np.loadtxt(
    "tourist_data.csv",
    skiprows=1, # 跳过第一行
    dtype=np.int64, # 设置读取文件的数据类型
    delimiter=",", # 设置文件分隔符
    usecols=(1, 2, 3, 4, 5), # 设置读取的列
    encoding="gbk",
    unpack=True # 将返回矩阵进行转置
)
print(jzg_data)
print(type(jzg_data))
print(jzg_data.dtype)
# 2. 求每个景点游客总人数
print("九寨沟的游客总人数是:", jzg_data.sum())
print("张家界的游客总人数是:", zjj_data.sum())
print("香港的游客总人数是:", hk_data.sum())
print("东部华侨城的游客总人数是:", dbhqc_data.sum())
print("上海迪士尼的游客总人数是:", disney_data.sum())

方法三(pandas):

import pandas as pd
# 1. 读取csv文件
data = pd.read_csv(
    "tourist_data.csv",
    index_col="日期", # 设置索引列
    header=0, # 设置标题行
    encoding='gbk'
)
print(data)
print(type(data))
print(data['九寨沟'])
print(type(data['九寨沟']))
print(data['九寨沟'].sum())
# 2. 求每个景点游客总人数
print("九寨沟的游客总人数是:", data['九寨沟'].sum())
print("张家界的游客总人数是:", data['张家界'].sum())
print("香港的游客总人数是:", data['香港'].sum())
print("东部华侨城的游客总人数是:", data['东部华侨城'].sum())
print("上海迪士尼的游客总人数是:", data['上海迪士尼'].sum())