作业1:
将酒店数据按照地区分类放入每个地区对应的csv文件中:
import csv
# 1). 读取文件
reader = csv.DictReader(open('files/北京高档酒店价格分析.csv', encoding='utf-8', newline=''))
# print(list(reader))
# 2). 获取键
keys = list(list(reader)[0].keys())
# print(keys)
# 3).遍历到每一个数据(字典),判断是哪个区,然后写入对应的文件中
reader = csv.DictReader(open('files/北京高档酒店价格分析.csv', encoding='utf-8', newline=''))
for x in list(reader):
print(x)
if x['地区'] == '朝阳区':
writer = csv.DictWriter(open('files/朝阳区.csv', 'a', encoding='utf-8', newline=''), keys)
# 判断是第一个就写入头部数据
reader1 = csv.reader(open('files/朝阳区.csv', encoding='utf-8', newline=""))
if not [x for x in reader1]:
writer.writeheader()
else:
writer.writerow(x)
elif x['地区'] == '东城区':
writer = csv.DictWriter(open('files/东城区.csv', 'a', encoding='utf-8', newline=''), keys)
reader2 = csv.reader(open('files/东城区.csv', encoding='utf-8',newline=''))
if not [x for x in reader2]:
writer.writeheader()
else:
writer.writerow(x)
elif x['地区'] == '海淀区':
writer = csv.DictWriter(open('files/海淀区.csv', 'a', encoding='utf-8', newline=''), keys)
reader3 = csv.reader(open('files/海淀区.csv', encoding='utf-8', newline=""))
if not [x for x in reader3]:
writer.writeheader()
else:
writer.writerow(x)
else:
writer = csv.DictWriter(open('files/其他城区.csv', 'a', encoding='utf-8', newline=''), keys)
reader4 = csv.reader(open('files/其他城区.csv', encoding='utf-8', newline=""))
if not [x for x in reader4]:
writer.writeheader()
else:
writer.writerow(x)
作业2:
# 作业2:
# 基于落户积分文件:
# 1)计入所有人的平均年龄
# 1.读文件
from time import *
from datetime import *
reader = csv.DictReader(open('files/2018年北京积分落户数据 (1).csv', encoding='utf-8', newline=''))
age = [(2022 - eval(x['birthday'][:4])) for x in reader]
print(f'平均年龄:{sum(age) // len(age)}岁')
# 2)修改每个人的生日,随机添加日(1-28);或判断月份添加
# 第一种,是普通闰年,能被4整除但不能被100整除(如2008年就是普通闰年);
# 第二种,比较少见的,世纪闰年:能被400整除(如2000年是世纪闰年,1900年不是世纪闰年)
import random
reader = csv.DictReader(open('files/2018年北京积分落户数据 (1).csv', encoding='utf-8', newline=''))
keys = list(list(reader)[0])
# print(keys)
write = csv.DictWriter(open('files/2018年北京积分落户数据 (修改).csv', 'w', encoding='utf-8', newline=''),keys)
write.writeheader()
# print(list(reader))
reader = csv.DictReader(open('files/2018年北京积分落户数据 (1).csv', encoding='utf-8', newline=''))
for x in reader:
year = eval(x['birthday'][:4])
month = x['birthday'][5:7]
# print(month)
if month in ('01', '03', '05', '07', '08', '10', '12'):
day = str(random.randint(1, 31))
x['birthday'] = x['birthday'] + '-' + day.rjust(2,'0')
write.writerow(x)
elif month in ('04', '06', '09', '11'):
day = str(random.randint(1, 30))
x['birthday'] = x['birthday'] + '-' + day.rjust(2,'0')
write.writerow(x)
# 如果是二月份分平闰年讨论
else:
# 如果是闰年
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
day = str(random.randint(1, 29))
x['birthday'] = x['birthday'] + '-' + day.rjust(2,'0')
write.writerow(x)
else:
day = str(random.randint(1, 28))
x['birthday'] = x['birthday'] + '-' + day.rjust(2,'0')
write.writerow(x)
# 3)将所有狮子座的人对应的数据放入到一个单独的csv文件中
# 狮子座的日期: 7月23日-8月22日
reader = csv.DictReader(open('files/2018年北京积分落户数据 (修改).csv', encoding='utf-8', newline=''))
write = csv.DictWriter(open('files/狮子座.csv', 'w', encoding='utf-8', newline=''), keys)
write.writeheader()
for x in reader:
mothon_day = x['birthday'][5:]
# print(mothon_day)
day1 = mothon_day[3:]
if mothon_day[:2] == '07':
if day1[0] == '0':
day1 = day1[-1]
if eval(day1) >= 23:
write.writerow(x)
elif mothon_day[:2] == '08':
day1 = mothon_day[3:]
if day1[0] == '0':
day1 = day1[-1]
if eval(day1) <= 22:
write.writerow(x)