Python机器学习三大件之二pandas

 更新时间:2021年05月11日 11:10:19   作者:深海漫步鹅  
这篇文章主要介绍了Python机器学习三大件之二pandas,文中有非常详细的代码示例,对正在学习Python的小伙伴们有很好地帮助,需要的朋友可以参考下

一、Pandas

2008年WesMcKinney开发出的库

专门用于数据挖掘的开源python库

以Numpy为基础,借力Numpy模块在计算方面性能高的优势

基于matplotlib,能够简便的画图

独特的数据结构

二、数据结构

  • Pandas中一共有三种数据结构,分别为:Series、DataFrame和MultiIndex。

三、Series

Series是一个类似于一维数组的数据结构,它能够保存任何类型的数据,比如整数、字符串、浮点数等,主要由一组数据和与之相关的索引两部分构成。

在这里插入图片描述

  • Series的创建
import pandas as pd
pd.Series(np.arange(3))

0 0
1 1
2 2
dtype: int64

#指定索引
pd.Series([6.7,5.6,3,10,2], index=[1,2,3,4,5])

1 6.7
2 5.6
3 3.0
4 10.0
5 2.0
dtype: float64

#通过字典数据创建
color_count = pd.Series({'red':100, 'blue':200, 'green': 500, 'yellow':1000})
color_count

blue 200
green 500
red 100
yellow 1000
dtype: int64

  • Series的属性
color_count.index
color_count.values

也可以使用索引来获取数据:

color_count[2]

100

  • Series排序

data[‘p_change'].sort_values(ascending=True) # 对值进行排序
data[‘p_change'].sort_index() # 对索引进行排序
#series排序时,只有一列,不需要参数

四、DataFrame

创建

pd.DataFrame(np.random.randn(2,3))

在这里插入图片描述

score = np.random.randint(40, 100, (10, 5))
score

array([[92, 55, 78, 50, 50],
[71, 76, 50, 48, 96],
[45, 84, 78, 51, 68],
[81, 91, 56, 54, 76],
[86, 66, 77, 67, 95],
[46, 86, 56, 61, 99],
[46, 95, 44, 46, 56],
[80, 50, 45, 65, 57],
[41, 93, 90, 41, 97],
[65, 83, 57, 57, 40]])

但是这样的数据形式很难看到存储的是什么的样的数据,可读性比较差!!

# 使用Pandas中的数据结构
score_df = pd.DataFrame(score)

在这里插入图片描述

  • DataFrame的属性

data.shape
data.index
data.columns
data.values
data.T
data.head(5)
data.tail(5)
data.reset_index(keys, drop=True)
keys : 列索引名成或者列索引名称的列表
drop : boolean, default True.当做新的索引,删除原来的列

  • dataframe基本数据操作

data[‘open'][‘2018-02-27'] # 直接使用行列索引名字的方式(先列后行)
data.loc[‘2018-02-27':‘2018-02-22', ‘open'] # 使用loc:只能指定行列索引的名字
data.iloc[:3, :5 ]# 使用iloc可以通过索引的下标去获取
data.sort_values(by=“open”, ascending=True) #单个排序
data.sort_values(by=[‘open', ‘high']) # 按照多个键进行排序
data.sort_index() # 对索引进行排序

DataFrame运算

应用add等实现数据间的加、减法运算
应用逻辑运算符号实现数据的逻辑筛选
应用isin, query实现数据的筛选
使用describe完成综合统计
使用max, min, mean, std完成统计计算
使用idxmin、idxmax完成最大值最小值的索引
使用cumsum等实现累计分析
应用apply函数实现数据的自定义处理

五、pandas.DataFrame.plot

DataFrame.plot(kind=‘line')
kind : str,需要绘制图形的种类
‘line' : line plot (default)
‘bar' : vertical bar plot
‘barh' : horizontal bar plot
关于“barh”的解释:
http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.plot.barh.html
‘hist' : histogram
‘pie' : pie plot
‘scatter' : scatter plot

六、缺失值处理

isnull、notnull判断是否存在缺失值
np.any(pd.isnull(movie)) # 里面如果有一个缺失值,就返回True
np.all(pd.notnull(movie)) # 里面如果有一个缺失值,就返回False
dropna删除np.nan标记的缺失值
movie.dropna()
fillna填充缺失值
movie[i].fillna(value=movie[i].mean(), inplace=True)
replace替换
wis.replace(to_replace="?", value=np.NaN)

七、数据离散化

p_change= data['p_change']
# 自行分组,每组个数差不多
qcut = pd.qcut(p_change, 10)
# 计算分到每个组数据个数
qcut.value_counts()
# 自己指定分组区间
bins = [-100, -7, -5, -3, 0, 3, 5, 7, 100]
p_counts = pd.cut(p_change, bins)

得出one-hot编码矩阵

dummies = pd.get_dummies(p_counts, prefix="rise")
#prefix:分组名字前缀

八、数据合并

pd.concat([data1, data2], axis=1)
按照行或列进行合并,axis=0为列索引,axis=1为行索引

pd.merge(left, right, how=‘inner', on=None)

可以指定按照两组数据的共同键值对合并或者左右各自
left: DataFrame
right: 另一个DataFrame
on: 指定的共同键
how:按照什么方式连接

九、交叉表与透视表

交叉表:计算一列数据对于另外一列数据的分组个数 透视表:指定某一列对另一列的关系

#通过交叉表找寻两列数据的关系
count = pd.crosstab(data['week'], data['posi_neg'])
#通过透视表,将整个过程变成更简单一些
data.pivot_table(['posi_neg'], index='week')

十、数据聚合

count = starbucks.groupby(['Country']).count()
col.groupby(['color'])['price1'].mean()
#抛开聚合谈分组,无意义

到此这篇关于Python机器学习三大件之二pandas的文章就介绍到这了,更多相关Python pandas内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java StringTokenizer分隔符拆分字符串

    Java StringTokenizer分隔符拆分字符串

    Java中的StringTokenizer类用于将一个字符串分解成标记,本文主要介绍了Java StringTokenizer分隔符拆分字符串,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • mybatis-plus常用注解@TableId和@TableField的用法

    mybatis-plus常用注解@TableId和@TableField的用法

    本文主要介绍了mybatis-plus常用注解@TableId和@TableField的用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Javaweb项目启动Tomcat常见的报错解决方案

    Javaweb项目启动Tomcat常见的报错解决方案

    Java Web项目启动Tomcat时可能会遇到各种错误,本文就来介绍一下Javaweb项目启动Tomcat常见的报错解决方案,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • 一篇文章带你了解Java Spring基础与IOC

    一篇文章带你了解Java Spring基础与IOC

    这篇文章主要介绍了Java Spring基础与IOC,文中讲解的相关内容非常详细,也运用了大量的代码进行讲解,感兴趣的小伙伴可以参考一下
    2021-08-08
  • 详解@ConfigurationProperties如何装载到Spring容器中

    详解@ConfigurationProperties如何装载到Spring容器中

    这篇文章主要为大家详细介绍了@ConfigurationProperties该如何装载到Spring容器中,文中的示例代码讲解详细,需要的小伙伴可以参考一下
    2023-07-07
  • springboot controller 增加指定前缀的两种实现方法

    springboot controller 增加指定前缀的两种实现方法

    这篇文章主要介绍了springboot controller 增加指定前缀的两种实现方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • IDEA中的.iml文件和.idea文件的作用及意义

    IDEA中的.iml文件和.idea文件的作用及意义

    iml是 项目标识文件,每一个模块都有一个iml文件,存储模块的相关信息,跟eclipse的project文件是一样的功能,这篇文章主要介绍了IDEA中的.iml文件和.idea文件的作用,需要的朋友可以参考下
    2023-09-09
  • 详解Java运算中的取余

    详解Java运算中的取余

    这篇文章主要介绍了java运算中的取余,在java运算中,取余符号是 %,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • Spring Cloud Hystrix线程池不足的解决方法

    Spring Cloud Hystrix线程池不足的解决方法

    这篇文章主要介绍了Spring Cloud Hystrix线程池不足的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • Java实现EasyCaptcha图形验证码的具体使用

    Java实现EasyCaptcha图形验证码的具体使用

    Java图形验证码,支持gif、中文、算术等类型,可用于Java Web、JavaSE等项目,下面就跟随小编一起来了解一下
    2021-08-08

最新评论