背景:有同学问python作业,前面很简单,最后的数据清洗给我搞懵了
来看看吧
#### 编程基础1:有四个数字:3、5、7、9,能组成多少个互不相同且无重复数字的三位数?输出所有的排列? if __name__ == '__main__': num=0 mylist = [3,5,7,9]#定义数组 3、5、7、9 for i in mylist: #循环赋值 for j in mylist: for k in mylist: if(i!=j and j!=k and i!=k): #当每一个值不相等时 打印出来 num=num+1 print(str(i)+str(j)+str(k)) print("能组成"+str(num)+"个互不相同且无重复数字的三位数,分别为以上")随机生成一个包含20个取值在[1,10]之间的随机整数的列表,将其中的偶数按升序排列放置在列表前部,奇数按降序排列放置在列表后部
import random list = [] for i in range(20): t = random.randint(1, 10) list.append(t) print("生成的随机20个数"+str(list)) list_Ou = [] for i in range(20): if (list[i] % 2 == 0): list_Ou.append(list[i]) # print(list[i]) print("偶数为"+str(list_Ou)) #升序排列 oushu_sx_list=sorted(list_Ou) print("升序排列"+str(oushu_sx_list)) # print(list_Ou) list_Ji = [] for i in range(20): if (i % 2 != 0):#奇数判断 list_Ji.append(list[i]) print("奇数数组"+str(list_Ji)) #降序 *** 作 jishu_jx_list = sorted(list_Ji, reverse=True) print("奇数数组降序"+str(jishu_jx_list)) #数据整合 偶数放在前 奇数在后 :将其中的偶数按升序排列放置在列表前部,奇数按降序排列放置在列表后部 result_data=str(oushu_sx_list)+str(jishu_jx_list) print(result_data)编程基础3:用字典存储下面表格的数据",
"|姓名|兴趣爱好|n", "|----|----|n", "|李阳|音乐、读书、跑步|n", "|王天薇|美食、诗歌、旅游|n", "|郭晓强|编程、骑行、旅游、跑步|n", "|文雨非|羽毛球、跑步、音乐、诗歌|n", "|郑菲菲|美食、排球、舞蹈|n", "n", "找出具有共同爱好的人,并存储在字典中,例如: "美食:王天薇、郑菲菲"作为一个条目存储在结果字典中
r1 = {"name": "李阳", 'hobby': '音乐、读书、跑步'} r2 = {"name": "王天薇", 'hobby': '美食、诗歌、旅游'} r3 = {"name": "郭晓强", 'hobby': '编程、骑行、旅游、跑步'} r4 = {"name": "文雨非", 'hobby': '羽毛球、跑步、音乐、诗歌'} r5 = {"name": "郑菲菲", 'hobby': '美食、排球、舞蹈'} #共同爱好 r6 = {"name": "", 'hobby': '美食:'} r7 = {"name": "", 'hobby': '音乐:'} r8 = {"name": "", 'hobby': '跑步:'} r9 = {"name": "", 'hobby': '诗歌:'} r10 = {"name": "", 'hobby': '旅游:'} # 建一个列表,整合三行字典数据 tb = [r1, r2, r3,r4,r5] tb_aihao=[r6, r7, r8,r9,r10] #美食爱好分类 meishi_aihao="" for i in range(len(tb)): # print(len(tb[i].get('hobby')))#每个兴趣爱好的字符串长度 for j in range(len(tb[i].get('hobby'))):#循环读取每一个字符 if(tb[i].get('hobby')[j]=='美'): if(meishi_aihao==""): meishi_aihao=str(tb[i].get('name'))+meishi_aihao else: meishi_aihao=str(tb[i].get('name'))+','+meishi_aihao tb_aihao[0]['name'] = meishi_aihao #音乐爱好分类 yinyue_aihao="" for i in range(len(tb)): # print(len(tb[i].get('hobby')))#每个兴趣爱好的字符串长度 for j in range(len(tb[i].get('hobby'))):#循环读取每一个字符 if(tb[i].get('hobby')[j]=='音'): if(yinyue_aihao==""): yinyue_aihao=str(tb[i].get('name'))+yinyue_aihao else: yinyue_aihao=str(tb[i].get('name'))+','+yinyue_aihao tb_aihao[1]['name'] = yinyue_aihao #跑步爱好分类 paobu_aihao="" for i in range(len(tb)): # print(len(tb[i].get('hobby')))#每个兴趣爱好的字符串长度 for j in range(len(tb[i].get('hobby'))):#循环读取每一个字符 if(tb[i].get('hobby')[j]=='跑'): if(paobu_aihao==""): paobu_aihao=str(tb[i].get('name'))+paobu_aihao else: paobu_aihao=str(tb[i].get('name'))+','+paobu_aihao tb_aihao[2]['name'] = paobu_aihao #诗歌爱好分类 shige_aihao="" for i in range(len(tb)): # print(len(tb[i].get('hobby')))#每个兴趣爱好的字符串长度 for j in range(len(tb[i].get('hobby'))):#循环读取每一个字符 if(tb[i].get('hobby')[j]=='诗'): if(shige_aihao==""): shige_aihao=str(tb[i].get('name'))+shige_aihao else: shige_aihao=str(tb[i].get('name'))+','+shige_aihao tb_aihao[3]['name'] = shige_aihao #旅游爱好分类 lvyou_aihao="" for i in range(len(tb)): # print(len(tb[i].get('hobby')))#每个兴趣爱好的字符串长度 for j in range(len(tb[i].get('hobby'))):#循环读取每一个字符 if(tb[i].get('hobby')[j]=='旅'): if(lvyou_aihao==""): lvyou_aihao=str(tb[i].get('name'))+lvyou_aihao else: lvyou_aihao=str(tb[i].get('name'))+','+lvyou_aihao tb_aihao[4]['name'] = lvyou_aihao # 打印数据 for i in range(len(tb)): print(tb[i].get('name'), tb[i].get('hobby')) print("=====分类=====") for i in range(len(tb_aihao)): print(tb_aihao[i].get('hobby'),tb_aihao[i].get('name'))文件夹中的数据文件 kzpart.csv 包含有2020年10月用户从大型家用电器和电子产品在线商店的购买数据
"- event_time -事件发生时间n", "- product_id -产品编号n", "- category_id -产品的类别IDn", "- category_code -产品的类别代码(代码名称)n", "- brand -品牌名称n", "- price -产品价格n", "- user_id -用户IDn", "n", "#### 尝试完成以下分析,并解释分析结果(70分)n", "1. 用户消费金额、消费次数的描述性统计 n", "2. 用户消费次数、消费金额散点图 n", "3. 用户消费金额分布图 n", "4. 用户消费次数分布图 n", "5. 用户累计消费金额占比 n", "n", "在代码注释中清晰说明分析步骤"
import numpy as np import pandas as pd import matplotlib.pyplot as plt raw_data=pd.read_csv("kzpart.csv") pd.set_option("display.max_columns",10) raw_data.head(10) raw_data.dtypes raw_data.shape # 数据形状(2616807,8) np.sum(raw_data.duplicated()) # 重复数据有63356条 raw_data=raw_data.drop_duplicates() raw_data.isnull().sum() raw_data=raw_data.dropna() raw_data.shape # 数据形状(396632,8) aa=raw_data.describe() # price产品价格均值大于中位数,呈现右偏分布 print(aa) # 用户消费金额、消费次数的描述性统计 raw_data["event_time"]=pd.to_datetime(raw_data["event_time"]) raw_data.info() raw_data.to_csv("11.csv",index=False) # 以备tableau进行探索性分析 raw_data.index=raw_data["event_time"] raw_data_new=raw_data["2020-10":"2020-11"] raw_data_new=raw_data_new[raw_data_new["price"]>0] frequency_value=raw_data_new[["event_time","user_id"]].groupby(by="user_id").count() frequency_value.describe() frequency_value_fugou=frequency_value[frequency_value["event_time"]>1].count() fugou_rate=frequency_value_fugou/frequency_value.count() # 用户消费次数分布图 frequency=pd.cut(frequency_value["event_time"],bins=[0,1,2,10,100,800],labels=["1次","2次","3-10次","11-100次","101次以上"]) frequency.value_counts() plt.rcParams["font.sans-serif"]="SimHei" plt.rcParams["axes.unicode_minus"]=False label1=["1次","3-10次","2次" ,"11-100次","101次以上"] plt.bar(range(5),frequency.value_counts()) plt.xlabel("消费次数") plt.ylabel("用户数量") plt.xticks(range(5),label1) plt.title("用户消费次数分布图") plt.show() # 消费金额分布图 monetary_value=raw_data_new[["price","user_id"]].groupby(by="user_id").sum() monetary=pd.cut(monetary_value["price"],bins=[0,500,1000,5000,10000,150000],labels=["0-500元","501-1000元","1001-5000元","5001-10000元","10000元以上"]) monetary.value_counts() label2=["0-500元","1001-5000元","501-1000元","5001-10000元","10000元以上"] plt.bar(range(5),monetary.value_counts()) plt.xlabel("消费金额") plt.ylabel("用户数量") plt.xticks(range(5),label2) plt.title("消费金额分布图") plt.show() # 用户消费次数、消费金额散点图 raw_data.groupby('user_id').sum().describe() x = raw_data.groupby('user_id').count()['product_id'] y = raw_data.groupby('user_id').sum()['price'] plt.figure(figsize=(12,8)) plt.scatter(x,y,s=80, alpha=0.7) plt.xlabel('消费次数',fontsize=40) plt.ylabel('消费金额',fontsize=40) plt.xticks(range(5),label2) plt.title("散点图") plt.xticks(fontsize=20) plt.yticks(fontsize=20) plt.show()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)