背景:有同学问python作业,前面很简单,最后的数据清洗给我搞懵了
来看看吧
编程基础1:有四个数字:3、5、7、9,能组成多少个互不相同且无重复数字的三位数?输出所有的排列?
代码语言:javascript复制#### 编程基础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]之间的随机整数的列表,将其中的偶数按升序排列放置在列表前部,奇数按降序排列放置在列表后部
代码语言:javascript复制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:用字典存储下面表格的数据",
代码语言:javascript复制"|姓名|兴趣爱好|n",
"|----|----|n",
"|李阳|音乐、读书、跑步|n",
"|王天薇|美食、诗歌、旅游|n",
"|郭晓强|编程、骑行、旅游、跑步|n",
"|文雨非|羽毛球、跑步、音乐、诗歌|n",
"|郑菲菲|美食、排球、舞蹈|n",
"n",
"找出具有共同爱好的人,并存储在字典中,例如: "美食:王天薇、郑菲菲"作为一个条目存储在结果字典中
代码语言:javascript复制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月用户从大型家用电器和电子产品在线商店的购买数据
代码语言:javascript复制 "- 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",
"在代码注释中清晰说明分析步骤"
代码语言:javascript复制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()