前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >初识 数据分析、数据清洗 附代码

初识 数据分析、数据清洗 附代码

作者头像
德宏大魔王
发布2023-08-08 13:17:40
1750
发布2023-08-08 13:17:40
举报
文章被收录于专栏:cloud stdiocloud stdio

背景:有同学问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 -产品的类别ID\n",
    "- category_code -产品的类别代码(代码名称)\n",
    "- brand -品牌名称\n",
    "- price -产品价格\n",
    "- user_id -用户ID\n",
    "\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()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-12-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 编程基础1:有四个数字:3、5、7、9,能组成多少个互不相同且无重复数字的三位数?输出所有的排列?
  • 随机生成一个包含20个取值在[1,10]之间的随机整数的列表,将其中的偶数按升序排列放置在列表前部,奇数按降序排列放置在列表后部
  • 编程基础3:用字典存储下面表格的数据",
  • 文件夹中的数据文件 kzpart.csv 包含有2020年10月用户从大型家用电器和电子产品在线商店的购买数据
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档