pd.get_dummies特征提取和数据处理
时间: 2023-05-04 15:01:05 浏览: 99
pd.get_dummies指的是Pandas库中的一个函数,它可以将具有离散值的列转换为指示矩阵。特征提取和数据处理是机器学习中重要的步骤,对于一些分类问题,我们需要将一些特征进行独热编码(One-Hot Encoding),以方便后续处理。pd.get_dummies函数就可以实现这项任务。
相关问题
def get_label_feature_of_date(label_field): """提取标记区间日期相关特征""" # 源数据 data = label_field.copy() data['Coupon_id'] = data['Coupon_id'].map(int) # 将Coupon_id列中float类型的元素转换为int类型,因为列中存在np.nan即空值会让整列的元素变为float data['Date_received'] = data['Date_received'].map(int) # 将Date_received列中float类型的元素转换为int类型,因为列中存在np.nan即空值会让整列的元素变为float # 返回的特征数据集 feature = data.copy() feature['Week_received'] = feature['date_received'].map(lambda x: x.isoweekday()) # 星期几,星期一为1,星期天为7 feature['is_weekend_reveived'] = feature['Week_received'].map(lambda x: 1 if x == 6 or x == 7 else 0) # 判断领券日是否为休息日 feature['Month_received'] = feature['date_received'].map(lambda x: x.month)# 月份 feature = pd.concat([feature, pd.get_dummies(feature['Week_received'], prefix='Week_received')], axis=1) # one-hot离散星期几 feature.index = range(len(feature)) # 重置index # 返回 return feature解释
这段代码的主要作用是提取标记区间日期相关的特征,将标记区间内的数据作为输入。具体来说,该函数首先对输入数据进行复制,然后将Coupon_id和Date_received两列的数据类型从float转换为int,以便后续的处理。接着,通过lambda函数分别计算领券日是星期几、是否为休息日、月份等特征,并将星期几进行one-hot编码。最后,通过concat()函数将编码后的特征数据集与原始数据集进行合并,并通过reset_index()函数重置数据集的行索引。最终将特征数据集作为输出返回。
#1.数据处理 #(1)加载数据 df = pd.read_csv('dev.csv') print(df.head(5)) print(df.shape) 在jupyter中对中文数据集进行数据清洗
在Jupyter Notebook中,对于中文数据集的数据清洗,主要包括以下几个步骤:
1. **加载数据**:
使用Pandas库的`read_csv`函数加载名为'dev.csv'的中文CSV文件。`head(5)`用于查看数据集的前5行,`shape`则显示数据框的行数和列数。
```python
# 加载中文数据
df = pd.read_csv('dev.csv', encoding='utf-8') # 指定编码为UTF-8,防止乱码
print(df.head()) # 打印前五行
print(df.shape) # 输出数据框的行数和列数
```
2. **初步检查**:
确保数据集中没有缺失值(NaNs)或异常值,这可以通过`isnull().sum()` 或 `describe()` 函数查看。
```python
# 初步了解各列是否有缺失值
print(df.isnull().sum())
# 查看基本统计信息
print(df.describe(include='all')) # 包含所有非数字类型的统计描述
```
3. **删除或处理缺失值**:
根据实际情况选择处理方法。可以直接删除含有缺失值的记录,或者使用插补法填充(如`fillna`或`ffill/bfill`)。
```python
# 删除含有缺失值的行
df_cleaned = df.dropna()
# 或者使用均值、众数填充缺失值
df_filled = df.fillna(df.mean())
```
4. **异常值检测与处理**:
可能需要通过可视化(例如箱线图)找出异常值并进行修正或替换。
```python
plt.boxplot(df['column_to_check'])
```
5. **数据类型转换**:
将非数字字段(如日期、文本)转换为适合进一步分析的形式。例如,日期可能需要转化为日期时间格式。
```python
df['date_column'] = pd.to_datetime(df['date_column'])
```
6. **文本数据预处理**:
对中文文本进行分词、去停用词、词干提取或使用LDA等主题建模。
```python
import jieba
df['tokens'] = df['text_column'].apply(jieba.lcut)
```
7. **编码字符串变量**:
对分类变量进行编码,比如one-hot编码。
```python
df = pd.get_dummies(df, columns=['category_column'], drop_first=True)
```
阅读全文