Pandas对用户数据预处理

一、实验目的
(1) 掌握处理重复值的方法。

(2) 掌握处理缺失值的方法。

(3) 掌握处理异常值的方法。

二、实验内容
(1) 处理重复值。

(2) 处理缺失值。

(3) 处理异常值。

三、实验过程、内容

介绍代码实现的详细过程情况。

3.1 处理重复值

运用duplicated()方法查看数据重复情况,并运用drop_duplicates()方法删除重复值。

        导入库

import pandas as pd
import numpy as np

        导入数据

df = pd.read_csv('USER_INFO.csv',encoding='gbk')
df.head()

        查看重复的数据情况

df[df.duplicated().values == True]

         去重前数据大小

df.shape    #去重前数据大小

        

 

        去除重复的数据

df1 = df.drop_duplicates(ignore_index=True)
df1.shape    #去重后数据大小

3.2 处理缺失值

查看数据中各个属性的缺失值数, 将性别缺失的赋值为3, 年龄缺失的赋值为0, 星座缺失的赋值为0。

         查看数据的缺失值

df.isnull()

         查看性别字段缺失情况

df1[df1['CUST_SEX'].isnull().values==True]

         将性别列为空的的填充为3

df1 = df1.fillna({"CUST_SEX":3})

        查看年龄字段缺失的值

df1[df1['CERT_AGE'].isnull().values==True]

       年龄缺失的赋值为0

df1 = df1.fillna({"CERT_AGE":0})

        查看星座字段缺失值情况

df1[df1['CONSTELLATION_DESC'].isnull().values==True]

       星座缺失的赋值为0

df1 = df1.fillna({"CONSTELLATION_DESC":0})

    

3.3 处理异常值

查找出在网时长小于0、费用大于4万元、总通话时长比本地通话时长、国内长途通话时长和国内漫游通话时长的和大于100的数据并删除。

#删除异常值数据
df1.drop(df1[(df1['INNET_MONTH']<0)|(df1['ACCT_FEE']>40000)|(df1['CALL_DURA']>df1['NO_ROAM_LOCAL_CALL_DURA'])|(df1['NO_ROAM_GN_LONG_CALL_DURA']+df1['GN_ROAM_CALL_DURA']>100)].index,inplace=True)

  删除后的数据大小由三十万缩减到快四万。

df1.shape

 3.4 保存处理后的数据

df1.to_csv('./预处理后的数据.csv')

### 使用Pandas进行社交媒体数据预处理 #### 数据加载与初步查看 为了有效地使用 Pandas 进行社交媒体数据预处理,首先需要导入必要的库并将数据加载到 DataFrame 中。常情况下,社交媒体数据可以从 CSV 文件、API 或数据库中获取。 ```python import pandas as pd # 假设从CSV文件读取数据 df = pd.read_csv('social_media_data.csv') # 查看前几行数据以了解其结构 print(df.head()) ``` #### 处理缺失值 在实际应用中,社交媒体数据可能存在许多缺失值。对于这些缺失值,可以根据具体情况选择删除含有缺失值的记录或是填充合适的替代值[^2]。 ```python # 删除任何包含NaN值的行 df_cleaned = df.dropna() # 或者用均值/众数等方法填补特定列中的缺失值 mean_value = df['age'].mean() df['age'] = df['age'].fillna(mean_value) ``` #### 类型转换 有时原始数据中的某些字段虽然表示的是数值信息但却被存储成了字符串形式,在这种时候就需要将其转换成相应的数字类型以便于后续操作[^1]。 ```python # 将年龄这一列为整数而非字符串 df['age'] = df['age'].astype(int) # 对日期时间类型的列做同样的事情 df['date'] = pd.to_datetime(df['timestamp']) ``` #### 文本清理 针对文本类别的特征(比如评论),往往存在很多不必要的字符或格式不一致的情况。可以过去除HTML标签、标准化大小写等方式来进行简单的文本清理工作。 ```python import re def clean_text(text): text = re.sub('<.*?>', '', text) # 移除 HTML 标签 text = text.lower() # 转换成小写字母 return text.strip() df['comment'] = df['comment'].apply(clean_text) ``` #### 特征工程 根据业务需求创建新特性也可能成为预处理的一部分。例如提取用户的活跃时间段作为额外的信息加入到现有表格里去。 ```python # 添加一列表明每条评论是在白天还是晚上发的 df['time_of_day'] = df['date'].dt.hour.apply(lambda x: 'morning' if (7 <= x < 12) else ('afternoon' if (12 <= x < 18) else 'evening')) ``` 过上述步骤,可以显著提高社交媒体数据的质量,使其更适合进一步分析和建模的需求。值得注意的是,具体的操作会依据所面对的实际问题而有所不同;因此,在实践中应当灵活调整策略以适应不同的场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

eye了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值