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

数分学习-数据处理和可视化

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

数分学习-数据处理和可视化

数据清洗及特征处理 缺失值观察和处理

查看空值个数

data.info()
data.isnull().sum()

缺失值处理

#检索空值
data[data['Age'].isna()] = 0
data[data['Age'].isnull()] = 0 #推荐
data[data['Age'] == None] = 0
data[data['Age'] == np.nan] = 0 #采用比较时候,不要使用none,有的检索不出来
# dropna()函数删除有空值的行和列,,thresh决定空值的个数
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
df.dropna(how='all') #how决定删除依据是只要有空值还是所有值都为空,all代表都为空才删除
df.dropna(thresh=2)  #删除操作需要达到的空值个数
df.dropna(subset=['name', 'toy'])  #删除 name toy列含有空值的行
# 填充空值
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)[source]
df.fillna(method="ffill") # method{‘backfill’, ‘ffill’, None}, default None 向前向后传播临近的非空值
values = {"A": 0, "B": 1, "C": 2, "D": 3}
df.fillna(value=values)   # 使用字典填充指定列的空值
df.fillna(value=values, limit=1) # limit 存在多个空值,决定填充空值的个数
df2 = pd.DataFrame(np.zeros((4, 4)), columns=list("ABCE"))
df.fillna(df2)  #使用dataframe格式填充空值,只有相同列明的空值才会被填充
重复值观察和处理
# duplicated 重复值检测,keep一般保持为默认first,第一次出现的记录为false,第二次及以后出现为ture,返回布尔值的series
duplicated(subset=None, keep='first')[source]
df.duplicated()
df.duplicated(subset=['brand'])# 指定列检测
df.duplicated().sum() #计算重复个数
data[data.duplicated()] #返回重复的数据
#drop_duplicates删除重复行,keep保持默认first,重复值保留第一次出现的记录
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False, ignore_index=False)
特征值观察于处理

连续型变量离散化处理(分箱)

#pd.cut()函数,可以等宽,可以指定区间分割,
pandas.cut(x, bins, right=True, labels=None, precision=3)
data['年龄分组']= pd.cut(data['Age'],5,labels =[1,2,3,4,5])#均分箱成5个年龄段,并分别用类别变量12345表示
pd.cut(data['Age'],[0,5,15,30,50,80],right = False,labels =[1,2,3,4,5]) #划分为[0,5) [5,15) [15,30) [30,50) [50,80)五个年龄段,并分别用类别变量12345表示
#qcut()按频率分
pd.qcut(data['Age'],[0,0.1,0.3,0.5,0.7,0.9],labels =[1,2,3,4,5])# 按10% 30% 50% 70% 90%五个年龄段,并用分类变量12345表示

对文本变量进行转换

#查看文本变量名及种类
data['Sex'].value_counts()# 返回每种名称和数量
data['Sex'].unique() #返回种类名称
data['Sex'].nunique() #只返回种类的数量
#种类较少的可以使用replace map函数进行替换
data['sex_num'] = data['Sex'].map({'male':1,'female':2}) #没有匹配上的会赋值为空
data['sex_num'] = data['Sex'].replace(['male', 'female'],[1,2]) #没有对应的保持原值
#使用sklearn的labelencoder
from sklearn.preprocessing import LabelEncoder
data['Cabin'] = LabelEncoder().fit_transform(data['Cabin'])
#onehot编码
x = pd.get_dummies(data['Embarked'], prefix='Embarked') # prefix 前缀
data = pd.concat([data,x],axis =1)# 编码后的和源数据按照列拼接
数据重构1 数据链接
# 默认纵向连接行,axis=1 则横向链接列
result_up = pd.concat(list_up,axis=1)
#横向链接列
resul_up = text_left_up.join(text_right_up)
result_up = pd.merge(text_left_up,text_right_up,left_index=True,right_index=True)  #要有共同列或者使用索引left—_index =true;默认内连接
#纵向链接行
result = resul_up.append(result_down)
数据重构
#吧dataframe格式数据转为series类型 level 控制列轴到行显示的索引级别
DataFrame.stack(level=- 1, dropna=True)[source]
聚合函数
# data数据按照性别聚合,分别计算票价均值和仓位总和
data.groupby('Sex').agg({'Fare': 'mean', 'Pclass': 'count'}).rename(columns=
                            {'Fare': 'mean_fare', 'Pclass': 'count_pclass'})
data['Survived'].groupby(data['Sex']).sum()
数据可视化
pandas.DataFrame.plot()

import matplotlib.pyplot as plt
#柱状图
survived.plot.bar()
data.groupby(by = ['Pclass'])['Survived'].value_counts().unstack().plot(kind='bar',stacked = 'true')
#折线图
far=data.groupby(by = ['Fare'])['Survived'].value_counts().sort_values(ascending=False)
fig = plt.figure(figsize=(20, 20))
far.plot(grid= 'Ture')
plt.legend()
plt.show()
#直方图
data.Age[data['Survived'] == 0].hist(bins =5,alpha = 0.5)
data.Age[data['Survived'] == 1].hist(bins =5,alpha = 0.5)
plt.legend((0,1))
plt.xlabel('age')
plt.ylabel('count')
#密度分布图
data.Age[data['Survived'] == 0].plot.density()
data.Age[data['Survived'] == 1].plot.density()
转载请注明:

作者:vision
文章标题:copilot在Pycharm的应用
文章来源:1:城南花开;2:vision_wang的csdn

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

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

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