'''【项目01】 商铺数据加载及存储
作业要求:
1、成功读取“商铺数据.csv”文件
2、解析数据,存成列表字典格式:[{'var1':value1,'var2':value2,'var3':values,...},...,{}]
3、数据清洗:
① comment,price两个字段清洗成数字
② 清除字段缺失的数据
③ commentlist拆分成三个字段,并且清洗成数字
4、结果存为.pkl文件
'''
#读取数据
f=open(r'C:\Users\Lenovo\OneDrive\统计分析\网易云课堂微课程:python\课程一、基础语言入门:从零开始学习Python\数据\商铺数据.csv',
'r',encoding='utf8')
print(f.readlines()[0:5])
#定义函数
def fcm(s):
if '条' in s:
return(int(s.split(' ')[0]))
else:
return('缺失数据')
def fpr(s):
if '¥' in s:
return(float(s.split('¥')[-1]))
else:
return('缺失数据')
def fcml(s):
if ' ' in s:
quality=float(s.split(' ')[0][2:])#空格数不一样提取不出数据,必须按照文本空格数
environment=float(s.split(' ')[1][2:])
service=float(s.split(' ')[2][2:])
return([quality,environment,service])
else:
return('数据缺失')
#解析数据
m=[]
n=0#创建计数变量
f.seek(0)
for line in f.readlines()[1:20]:
data=line.split(',')
typ=data[0]#提取分类数据
name=data[1]#提取商铺名称
cmt=fcm(data[2])#提取评论数
star=data[3]#提取星级评定
price=fpr(data[4])#提取人均消费
add=data[5]#提取商铺地址
qua=fcml(data[6])[0]#提取口味评分
env=fcml(data[6])[1]#提取环境评分
ser=fcml(data[6])[2]#提取服务评分
if '缺失数据' not in [cmt,price,qua]:
n=n+1
lst=[['type',typ],
['name',name],
['comment',cmt],
['star',star],
['price',price],
['address',add],
['quality',qua],
['environment',env],
['service',ser]]
m.append(dict(lst))
else:
continue
print(m)
#存为pkl文件
import pickle
pic=open(r'C:\Users\Lenovo\OneDrive\统计分析\网易云课堂微课程:python\课程一、基础语言入门:从零开始学习Python\数据\阶段一项目一作业.pkl','wb')
pickle.dump(m,pic)
pic.close()
print('sucessfull')
import pickle
f=open(r'C:\Users\Lenovo\OneDrive\统计分析\网易云课堂微课程:python\课程一、基础语言入门:从零开始学习Python\数据\阶段一项目一作业.pkl','rb')
pic=pickle.load(f)
print(pic)
#题目1:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的两位数?都是多少?
lst=[1,2,3,4]
n=0
m=0
for i in lst:
for j in lst:
if j != i:
n+=1
print('第%i个不重复数字为:\n'%n,str(i)+str(j))
else:
continue
print('排列完成,总共有%i个非重复组合'%n)
#题目2:输入三个整数x,y,z,请把这三个数由小到大输出,可调用input()。(需要加判断:判断输入数据是否为数字)
lst=[]
for i in range(1,4):
m=input('请输入第%i个数字:'%i)
while m.isnumeric==False:
m=input('请不要输入非数字字符,请重新输入%i个数字:'%i)
else:
lst.append(int(m))
lst.sort(reverse=True)
print(lst)
# 题目3:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
# 提示:利用while语句,条件为输入的字符不为'\n'.
# 该题目不需要创建函数
st=input('请输入一串字符:\n')
alpha=0
space=0
num=0
others=0
for i in st:
if i.isalpha()==True:
alpha+=1
elif i.isspace()==True:
space+=1
elif i.isdigit()==True:
num+=1
else:
others+=1
print('输入的字符串中,字母有%i个,空格有%i个,数字有%i个,其他字符有%i个'%(alpha,space,num,others))
# 题目4:猴子吃桃问题
# 猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,
# 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
# 以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少?
# 提示:采取逆向思维的方法,从后往前推断。
# 该题目不需要创建函数
n=1
for i in range(1,10):
n=(n+1)*2
print(n)
# 题目5:猜数字问题,要求如下:
# ① 随机生成一个整数
# ② 猜一个数字并输入
# ③ 判断是大是小,直到猜正确
# ④ 判断时间
# 提示:需要用time模块、random模块
# 该题目不需要创建函数
import time
import random
play_it=input('Are you want to begin? .y or n')
while play_it == 'y':
c=time.time()
num=random.randint(1,10)
x=int(input('请输入你认为正确的数字:'))
while x != num:
x=int(input('猜错啦,请重新输入你认为正确的数字:'))
else:
print('恭喜,猜对了!你真厉害!')
b=time.time()
usedtime=b-c
break
print('总用时%.2f'%usedtime)