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

利用pandas做EDA踩坑记录

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

利用pandas做EDA踩坑记录

利用pandas做EDA踩坑记录

参考材料:
十分钟掌握Seaborn,进阶Python数据可视化分析
scikit-learn (sklearn) 官方文档中文版

最近在自己学习如何基于python做EDA分析,但由于本人对于Pandas库并不熟悉,所以经常会出现报错和warning,在此记录下所遇到的坑,仅供学习和参考。

1. 离群点数据过滤

warning内容::7: UserWarning: Boolean Series key will be reindexed to match Dataframe index.
data_copy = data_copy[data[‘pump_total_absorbed_power’] < (q3 + 3 * iq)]

原因:经过排查发现是过滤条件和最终获得数组的名称不一致所致。
更改后的代码:

# 离群点数据过滤
q1 = data_power['pump_total_absorbed_power'].describe()['25%']
q3 = data_power['pump_total_absorbed_power'].describe()['75%']
iq = q3 - q1
# data_copy就是离群的数据
data_copy = data_power[data_power['pump_total_absorbed_power'] > (q1 - 3 * iq)]
data_copy = data_copy[data_copy['pump_total_absorbed_power'] < (q3 + 3 * iq)]
2. seaborn库 概述

是基于python且非常受欢迎的图形可视化库,在matplotlib的基础上,进行了更高级的封装,使得作图更加方便快捷。
Seabron可以实现Python环境下绝大部分探索性分析的任务,图形化的表达帮助对数据进行分析,而且对Python的其他库(比如Numpy、pandas、Scipy)有很好的支持
代码(绘制基本的条形图):

import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
titanic = sns.load_dataset(‘titanic’)
sns.barplot(x = ‘class’, y = ‘survived’, data = titanic)
  • 提供显示条件
%matplotlib inline

是为了在jupyter中正常显示图形,若没有这行代码,图形不显示

  • 导入数据
titanic = sns.load_dataset(‘titanic’)

用seaborn的load_dataset()方法导入数据’titanic’,这是泰坦尼克号的相关数据,内置于seaborn(内置数据都可以用此方法导入)

  • 输出图形
sns.barplot(x = ‘class’, y = ‘survived’, data = titanic)

这是图形输出的直接代码,barplot表示输出条形图,还有countplot、boxplot、violinplot、regplot、heatplot等多种图形方法可以使用。
Barplot()括号里的是需要设置的具体参数,涉及到数据、颜色、坐标轴、以及具体图形的一些控制变量,一般比较固定的是’x’、’y’、’data’,分别表示x轴、y轴,以及选择的数据集

(一)直方图
  1. 查看数据集的随机10行数据,用sample方法
titanic.sample(10)
  1. 删除缺失值数据,dropna()方法
age1 = titanic[‘age’].dropna()
sns.distplot(age1)

kde:控制密度估计曲线的函数,默认为True,不设置回默认显示
bins:控制分布举行数量的参数,通常我们可以增加其数量,以获得更为丰富的信息
reg:控制直方图中的边际毛毯,通过控制‘reg’实现毛毯是否显示

(二)条形图

利用矩阵条的高度反应数值变量的集中确实,以及使用errorbar功能(差棒图)来估计变量之间的差值统计(置信区间)。
默认展示的是某种变量分布的平均值(可通过参数修改为max、median等)

  1. 设置hue参数:对x轴的数据进行细分,细分的条件就是hue的参数值,比如这里我们的x轴是‘class’(仓位等级), 我们将其按‘sex’(性别)再进行细分
sns.barplot(x='class',y='survived',hue='sex',data=titanic)

换一组数据试试,将x轴设为’embarked’,y轴设为’survived’,并用’class’进行细分。

(三)计数图countplot
  1. 定义
    认为成是一种应用到分类变量的直方图,也可认为它是用以比较类别间计数差。


由此可见,我们选定某个字段,countplot()会自动帮我们同济该字段下个类别的数目。也可以再传入’hue’参数,进行细分:

sns.countplot(x='deck',hue='sex',data=titanic)

如果我们希望调换横纵坐标,也就是类别放于纵坐标,计数值横坐标显示,将x轴换为y轴即可。

sns.countplot(x='deck',hue='sex',data=titanic)

(四)箱线图boxplot
  1. 作用:
    是一种用作显示一组数据分散情况的统计图。
    包括:最大值、最小值、中位数及上下四分位数
    箱线图中的每个值对应于数据中的实际观察值。
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
titanic=sns.load_dataset('titanic')

sns.boxplot(x='class',y='age',data=titanic)

可以传入hue参数,来对x轴的字段进行细分

sns.boxplot(x='class',y='age',hue='who',data=titanic)

(五)回归图regplot/Implot

Seaborn中利用regplot()和lmplot()来进行回归,确定线性关系,它们密切相关,共享核心功能,但也有明显的不同
这里我们使用 Seaborn 自带的数据集’iris’来绘制回归相关的图形。首先我们导入收据来看看数据集的大概情况:

import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline

#导入数据集'iris'
iris=sns.load_dataset('iris')

#随机查看数据集的10行数据
iris.sample(10)

数据集总共5个字段,首先看‘sepal_length’和‘petal_length’之间的线性关系。
sns.regplot(x=‘sepal_length’,y=‘petal_length’,data=iris)

图中的点表示实际数据的点,Seaborn根据这些数据拟合出直线,表示x轴和y轴对应字段之间的线性关系,直线周围的阴影表示置信区间。

  1. 通过color和marker参数来控制图形的颜色以及数据点的形状
fig,axes=plt.subplots(1,2) 

sns.regplot(x='sepal_length',y='petal_length',data=iris,
            color='r',marker='+',ax=axes[0])

sns.regplot(x='sepal_length',y='petal_length',data=iris,
            color='g',marker='*',ax=axes[1])
  1. Implot()可以设置hue,进行多个类别的显示,而regplot()是不支持的。
    这里我们通过设置hue=’species’,来进行分类别的展示。
sns.lmplot(x='sepal_length',y='petal_length', hue='species',data=iris)
3. sklearn库 概述

是基于python语言的机器学习工具:简单高效的数据挖掘和数据分析工具,建立在NumPy、SciPy和matplotlib上

监督学习

(1) 广义线性模型

a. 最小二乘法

>>> from sklearn import linear_model
>>> reg = linear_model.LinearRegression()
>>> reg.fit ([[0, 0], [1, 1], [2, 2]], [0, 1, 2])
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)
>>> reg.coef_
array([ 0.5,  0.5])

如果X是一个形状为(n_sample, n_feature)的矩阵,时间复杂度: O(nsamplen2feature)

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

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

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