参考材料:
十分钟掌握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轴,以及选择的数据集
- 查看数据集的随机10行数据,用sample方法
titanic.sample(10)
- 删除缺失值数据,dropna()方法
age1 = titanic[‘age’].dropna() sns.distplot(age1)
kde:控制密度估计曲线的函数,默认为True,不设置回默认显示
bins:控制分布举行数量的参数,通常我们可以增加其数量,以获得更为丰富的信息
reg:控制直方图中的边际毛毯,通过控制‘reg’实现毛毯是否显示
利用矩阵条的高度反应数值变量的集中确实,以及使用errorbar功能(差棒图)来估计变量之间的差值统计(置信区间)。
默认展示的是某种变量分布的平均值(可通过参数修改为max、median等)
- 设置hue参数:对x轴的数据进行细分,细分的条件就是hue的参数值,比如这里我们的x轴是‘class’(仓位等级), 我们将其按‘sex’(性别)再进行细分
sns.barplot(x='class',y='survived',hue='sex',data=titanic)
换一组数据试试,将x轴设为’embarked’,y轴设为’survived’,并用’class’进行细分。
(三)计数图countplot- 定义
认为成是一种应用到分类变量的直方图,也可认为它是用以比较类别间计数差。
由此可见,我们选定某个字段,countplot()会自动帮我们同济该字段下个类别的数目。也可以再传入’hue’参数,进行细分:
sns.countplot(x='deck',hue='sex',data=titanic)
如果我们希望调换横纵坐标,也就是类别放于纵坐标,计数值横坐标显示,将x轴换为y轴即可。
sns.countplot(x='deck',hue='sex',data=titanic)(四)箱线图boxplot
- 作用:
是一种用作显示一组数据分散情况的统计图。
包括:最大值、最小值、中位数及上下四分位数
箱线图中的每个值对应于数据中的实际观察值。
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轴对应字段之间的线性关系,直线周围的阴影表示置信区间。
- 通过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])
- 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)



