版权声明:欢迎转载~ 转载请注明来源及作者,谢谢! https://blog.csdn.net/qq_42442369/article/details/86737540
【项目01】 商铺数据加载及存储
'''
【项目01】 商铺数据加载及存储
作业要求:
1、成功读取“商铺数据.csv”文件
2、解析数据,存成列表字典格式:[{'var1':value1,'var2':value2,'var3':values,...},...,{}]
3、数据清洗:
① comment,price两个字段清洗成数字
② 清除字段缺失的数据
③ commentlist拆分成三个字段,并且清洗成数字
4、结果存为.pkl文件
'''
# 数据读取
f = open('商铺数据.csv','r',encoding='utf8')
for i in f.readlines()[:5]:
print(i.split(','))
# 查看数据
# 创建comment、price、commentlist清洗函数 ## 因为comment,price, commentlist三组数据,亟需清洗:仔细看之后,觉得这种数据清洗,也是因地制宜来的。
## 根据关键字判断,然后截取到里面的量化数据
# 函数式编程
def fcm(s):
if '条' in s:
return int(s.split(' ')[0])
else:
return '缺失数据'
# comment清洗函数:用空格分段,选取结果list的第一个为点评数,并且转化为整型
def fpr(s):
if '¥' in s:
return float(s.split('¥')[-1])
else:
return '缺失数据'
# price清洗函数:用¥分段,选取结果list的最后一个为人均价格,并且转化为浮点型
def fcl(s):
if ' in s:
quality = float(s.split(' ')[0][2:])
environment = float(s.split(' ')[1][2:])
service = float(s.split(' ')[2][2:-1])
return [quality,environment,service]
else:
return '缺失数据'
# commentlist清洗函数:用空格分段,分别清洗出质量、环境及服务数据,并转化为浮点型
# 数据清洗
datalst = [] # 创建空列表
f.seek(0) ## seek()方法,从0开始移动,应该不可能是移动0
n = 0 # 创建计数变量
for i in f.readlines()[1:20]: ## 后面跟着1:20是从第一行,到第19行吗?
data = i.split(',') ## 把这些数据拆分成列表
# print(dat])
classify = data[0] # 提取分类
name = data[1] # 提取店铺名称
comment_count = fcm(data[2]) # 提取评论数量
star = data[3] # 提取星级
price = fpr(data[4]) # 提取人均
add = data[5] # 提取地址
qua = fcl(data[6])[0] # 提取质量评分
env = fcl(data[6])[1] # 提取环境评分
ser = fcl(data[6])[2] # 提取服务评分
if '缺失数据' not in [comment_count, price, qua]: # 用于判断是否有数据缺失 ## 这一段及下面的真看不太懂
n += 1
data_re = [['classify',classify],
['name',name],
['comment_count',comment_count],
['star',star],
['price',price],
['address',add],
['quality',qua],
['environment',env],
['service',ser]]
datalst.append(dict(data_re)) # 生成字典,并存入列表datalst
# print('成功加载%i条数据' %n) ## 用到了上面的计数变量
else:
continue
print(datalst)
# print('总共加载%i条数据' %n)
# 数据存储.pkl数据
import pickle
pic = open('C:/Users/shuol/Desktop/data.pkl','wb') ## data.pkl用什么打开? 为什么要存成data.pkl
pickle.dump(datalst,pic) ## 估计dump方法的作用是将datalst,也就是python的字典格式文件,转化为pickle文件
pic.close()
print('finished!')
# 将数据存成了pkl文件
# 读取pkl文件
pic2 = open('C:/Users/shuol/Desktop/data.pkl','rb')
readpkl = pickle.load(pic2)
print(readpkl)
【项目02】 基于Python的算法函数创建
'''
【项目02】 基于Python的算法函数创建
作业要求:
根据不同题目,完成代码书写并成功运行
# 题目1:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的两位数?都是多少?
# 该题目不用创建函数
n = 0 # 计数变量
for i in range(1,5):
for j in range(1,5):
if i != j:
n += 1
print("满足条件的数字为:%i%i" %(i,j))
print('总共有%i个结果' %n)
# 题目2:输入三个整数x,y,z,请把这三个数由小到大输出,可调用input()。(需要加判断:判断输入数据是否为数字)
# 提示:判断是否为数字:.isdigit()
# 该题目需要创建函数
def f(n):
lst =[]
for i in range(1,n+1):
x = input('请输入第%i个数字:'%i)
while x.isdigit() == False:
x = input('输入内容不为数字,请重新输入第%i个数字:'%i)
else:
lst.append(float(x))
return(sorted(lst))
f(4) # 执行函数
'''
# 题目3:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
# 提示:利用while语句,条件为输入的字符不为'\n'.
# 该题目不需要创建函数
st = input('请输入一行字符:\n')
letters = 0
space = 0
digit = 0
others = 0
for c in st:
if c.isalpha():
letters += 1
elif c.isspace():
space += 1
elif c.isdigit():
digit += 1
else:
others += 1
print ('char = %d,space = %d,digit = %d,others = %d' % (letters,space,digit,others))
# 题目4:猴子吃桃问题
# 猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,
# 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
# 以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少?
# 提示:采取逆向思维的方法,从后往前推断。
# 该题目不需要创建函数
n = 1
for day in range(9,0,-1):
m = (n + 1) * 2
n = m
print('第一天猴子共摘了%i个' %n)
# 题目5:猜数字问题,要求如下:
# ① 随机生成一个整数
# ② 猜一个数字并输入
# ③ 判断是大是小,直到猜正确
# ④ 判断时间
# 提示:需要用time模块、random模块
# 该题目不需要创建函数
import time
import random
play_it = input('do you want to play it.(\'y\' or \'n\')') # 询问是否参与游戏
while play_it == 'y':
c = input('input a character:\n') # 输入参与游戏人物
i = random.randint(0,100)
print( 'please input number you guess:\n')
a = time.time() # 记录开始时间
guess = int(input('input your guess:\n'))
while guess != i:
if guess > i:
print( 'please input a little smaller')
guess = int(input('input your guess:\n'))
else:
print( 'please input a little bigger')
guess = int(input('input your guess:\n'))
b = time.time() # 记录结束时间
usedtime = b - a
print( 'It took you %.2f seconds' % usedtime)
if usedtime < 15:
print( 'you are very clever!')
elif usedtime < 25:
print( 'you are normal!')
else:
print( 'you are stupid!')
print( 'Congradulations')
print( 'The number you guess is %d' % i)
break
else:
print('hehe')