【数据分析】lw

#!/usr/bin/env python
# -*- coding:utf-8 -*-

""" 
:Description: 记得些注释呀
:Owner: xiaofeng_zhao
:Create time: 2022/1/18
"""
import numpy as np
import pandas as pd
from sklearn.preprocessing import LabelEncoder

df = pd.read_csv('./titanic/data.txt',
                 names=['id', 'uid', 'age', 'gender', 'item_id', 'behavior_type', 'item_category', 'date', 'province'])
# print df #[3182261 rows x 9 columns]
# behavior_type: 1.浏览  2.收藏  3.加购物车  4.购买
# 7.统计各省的前十热门关注产品(浏览+收藏+添加购物车+购买总量最多前10的产品)
# 8.统计各省的前十热门购买产品(销售最多前10的产品)
# 9.统计各省销售最好的产品类别前10(销售最多前10的产品类别)
# 10.统计各省男女用户数量(gender 0:男 1:女 2:未知)
# 显示全部的列数
# pd.set_option('display.max_columns',None)

# 查看数据的详情信息
# print df.describe()

# 查看数据的缺失值
# 方法一:
# print df.info()

# 方法二:
# print df.isnull().sum() #可以看出,此时并没有空值

# 重复值的观察
# print df[df.duplicated()]  #[87 rows x 9 columns]

# 对重复值进行处理
df1 = df.drop_duplicates()

# 将清理之后的数据保存至新的csv中
# df1.to_csv('./titanic/clear_bise_data.csv',index=0)


# 选取清理后的数据进行分析
df2 = pd.read_csv('./titanic/clear_bise_data.csv')

# 对数据年龄进行分箱
# 连续变量Age划分为(0,20] (20,40] (40,60] (60,80] 4个年龄段,并分别用类别变量1234表示
# df2['AgeBank'] = pd.cut(df2['age'],[0,20,40,60,80],labels=[1,2,3,4])
# df2.to_csv('./titanic/bise_age_bank.csv',index=0)

# 查看文本类变量名及名称
# 方法一:
# print df2['province'].value_counts()  #共有34个省份
# 宁夏 福建

# 方法二:
# print df2['province'].nunique() 34


# 对类别文本文本进行处理
# df2['province_num'] = df['province'].replace(['宁夏', '福建', '湖北', '内蒙古', '西藏', '北京市', '吉林', '陕西', '上海市', '安徽'
#                                                  , '青海', '辽宁', '江西', '台湾', '浙江', '云南', '山西', '贵州', '澳门', '新疆'
#                                                  , '甘肃', '香港', '四川', '河北', '山东', '湖南', '广西', '天津市', '河南', '重庆市', '黑龙江',
#                                               '广东', '江苏', '海南'],
#                                              [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
#                                               22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34])

for item in ['province']:
    lbl = LabelEncoder()
    lbl_dict = dict(zip(df2[item].unique(),range(df2[item].nunique())))
    df2[item + "_labelEncode"] = df2[item].map(lbl_dict)
    df2[item + "_labelEncode"] = lbl.fit_transform(df2[item].astype(str))

# 将类别文本进行one_hot编码
# one hot编码是将类别变量转换为机器学习算法易于利用的一种形式的过程。

for item in ['province']:
    x = pd.get_dummies(df2[item],prefix=item)
    df2 = pd.concat([df2,x],axis=1)

df2.to_csv('./titanic/bise_one_hot.csv',index=0)





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值