第4章 使用Pandas进行数据预处理之任务4.4 转换数据

第4章 使用Pandas进行数据预处理之任务4.4 转换数据

庞立智
2023-10-30 / 0 评论 / 179 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2023年10月30日,已超过450天没有更新,若内容或图片失效,请留言反馈。

代码 4-24 利用get_dummies函数进行哑变量处理

import pandas as pd
all_info = pd.read_csv('../data/user_all_info.csv')
live_type = all_info.loc[0: 5, '居住类型']   #抽取部分数据做演示
print('哑变量处理前的数据为:\n', live_type)
print('哑变量处理后的数据为:\n', pd.get_dummies(live_type))

代码 4-25 等宽法离散化

age_cut = pd.cut(all_info['年龄'], 5)#提取年龄
print('离散化后5条记录年龄分布为:\n', age_cut.value_counts())

代码 4-26 等频法离散化

import numpy as np
# 自定义等频法离散化函数
def same_rate_cut(data, k):
    w = data.quantile(np.arange(0, 1 + 1.0 / k, 1.0 / k))
    data = pd.cut(data, w)
    return data
# 对用户年龄进行等频法离散化
age_same_rate = same_rate_cut(all_info['年龄'], 5).value_counts()   
print('用户年龄数据等频法离散化后分布状况为:', '\n', age_same_rate)

代码 4-27 聚类离散化

# 自定义数据K-Means聚类离散化函数
def kmean_cut(data, k):
    from sklearn.cluster import KMeans  # 引入K-Means
    # 建立模型
    kmodel = KMeans(n_clusters=k)
    kmodel.fit(data.values.reshape((len(data), 1)))  # 训练模型
    # 输出聚类中心并排序
    c = pd.DataFrame(kmodel.cluster_centers_).sort_values(0)   
    w = c.rolling(2).mean().iloc[1:]  # 相邻两项求中点,作为边界点
    w = [0] + list(w[0]) + [data.max()]  # 把首末边界点加上
    data = pd.cut(data, w)
    return data
# 用户年龄等频法离散化
all_info['年龄'].dropna(inplace=True)
age_kmeans = kmean_cut(all_info['年龄'], 5).value_counts()   
print('用户年龄聚类离散化后各个类别数目分布状况为:', '\n', age_kmeans)
1

评论 (0)

取消