栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

数据分析Python综合流程

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据分析Python综合流程

1. 数据读取

1.1. 调用
#调用pandas库
import pandas as pd

1.2. 常用文件读取

CSV文件:以逗号将不同特征值分开的表格文件。

df_origin=pd.read_csv(filepath_or_buffer)

通用文件:支持通用格式文件。

df_origin=pd.read_table(filepath_or_buffer)

Pickle文件

df_origin=pd.read_pickle(filepath_or_buffer)

其他文件:如Excel、Json、Html等。

Reference:pandas.read_pickle — pandas 1.4.3 documentation

2. 数据预处理

2.1. 缺失值处理
#查看缺失值
df_origin.isna()

#删除缺失值
df_nona=df_origin.dropna()

#填补缺失值
#缺失值变为数值
df_nona=df_origin.fillna(0)

#缺失值由字典填补,a、b、c为特征即a特征的缺失值都变为0
df_nona=df_origin.fillna('a':0,'b':1,'c':2)

#缺失值变为同一特征上一对象的记录
df_nona=df_origin.fillna(method='ffill')

Reference: pandas.DataFrame.fillna — pandas 1.4.3 documentation

2.2. 重复值处理
#查看重复值: 表格自上而下第一个会显示False,出现和上面重复的值会显示True
df_nona.duplicated()

#去除重复值
df_nodup=df_nona.drop_duplicates()

#去除特定列有重复值的行
df_nodup=df.nona.drop_duplicates(subset=['Price'])

重复值处理需注意:因为暴力去除重复值会导致数据分布(distribution)变化,因此可选择去除重复值后对重复值数据附加权重(Weight)。比如没记录去除了18个重复值,则带上原本自身的一个,Weight= 19。

Reference:

pandas.DataFrame.drop_duplicates — pandas 1.4.3 documentationhttps://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop_duplicates.html

 2.3.特征编码

由于机器只能识别数值,因此需要将标称型特征categorical feature(String或其他类型)变为数值类型interger codes。

#OrdinalEncoder是将特征值bian为0到n_categories - 1的范围内
enc = preprocessing.OrdinalEncoder()
enc.fit(df_nudup.X)  #X是特征名
enc


由于OrdinalEncoder将非numerical数据变为有序的numerical,会影响模型的建立,因此可使用one-of-K,又称为独热码或dummy encoding。

将n个特征值变为长度为n的二进制特征向量,每个值只有一位是1,其余都是0

enc = preprocessing.OneHotEncoder()
enc.fit(df_nodup.X)  
df_nodup

#可查看转换值
enc.transform([['female', 'from US', 'uses Safari'],
...                ['male', 'from Europe', 'uses Safari']]).toarray()
array([[1., 0., 0., 1., 0., 1.],
       [0., 1., 1., 0., 0., 1.]])

 Ref: https://www.sklearncn.cn/40/

 2.4. 降维(可选)

对于2维数据,我们创建新的2维空间,让原本数据点都落在新的其中一个特征向量上,那么另一个新空间特征向量的特征值为0,则该特征向量失去意义,2维向量变为1维向量。N维也是同样的道理。

 

由于降维会将原本的多个特征进行合并,所以并不合适探索特征和标签之间关系的模型(如线性回归)

from sklearn.decomposition import PCA
pca = PCA(n_components=2)
pca=pca.fit(df_nodup)
df_dr=transform(df_nodup)#获得新的矩阵

print(pca.explained_variance_ratio_)
print(pca.singular_values_)

2.5. 其他关键函数
#添加行,df2是相同特征的列表
df_nodup.append(df2)

#数组(series)的组合行是concat
s1 = pd.Series(['a', 'b'])
s2 = pd.Series(['c', 'd'])
pd.concat([s1, s2])

3. 建立模型

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/998461.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号