Python三方库:Pandas(数据分析)

   日期:2024-01-17     浏览:58    评论:0    

Pandas是一个基于Numpy的数据分析包,这个库就是为数据分析而生的,你可以向操作Excel一样操作Pandas,实现数据的选择排序、筛选过滤、统计分析等功能,实际上,Pandas就是Python中的Excel,学习Pandas之后你会更加深刻的理解这句话是多么的形象准确的。

为了简化表示,本文示例代码中的pd表示pandas库,即import pandas as pd。

 

一、基础数据结构DataFrame和Series

Pandas中最基础的数据结构就是DataFrame和Series,从数组的角度理解,可以将DataFrame看做是二维数组,将Series看做是一维数组,当然,最直观的理解就是DataFrame是一个Excel表格,由行索引、行数据、列名和列数据组成,而Series是则表中的一列数据,只有行索引和列数据两部分。

1. 创建DataFrame和Series

一个DataFrame可以看做是由行索引、列名及数据(二维数组)三部分构成,对于行索引,在Pandas中的处理是比较特殊的,比如有n行数据,默认情况下,行索引会是我们熟悉的从0到n-1的索引号,但是我们也可以自己指定每一行的行索引,或者说是行标签,通过行标签同样也能取到对应行的数据。当然,列名如果没有指定,同样是0到n-1的序号。

通过列表创建DataFrame:

通过字典创建DataFrame:

通过文件创建DataFrame:

csv文件数据

代码示例

 

通过列表创建Series:

 

2. 查看DataFrame和Series

DataFrame和Series对象有许多快速查看自身信息的属性和方法,因为Series的许多属性和方法与DataFrame都是相似的,所以这里就只列一些DataFrame中比较常用的:

  • DataFame.columns:表格的列名。
  • DataFame.dtypes:每列的数据类型。
  • DataFame.index:表格的行索引。
  • DataFame.size:表格中的元素个数。
  • DataFame.values:表格中的数据,返回的是一个二维数组对象。
  • DataFame.head(n):默认展示表格前5行数据,也可以指定展示前n行数据。
  • DataFame.tail(n):默认展示表格末尾5行数据,也可以指定展示默认n行数据。
  • DataFame.info():查看表格的一个简答汇总信息,包括有多少行、有多少列、每列的数据类型等信息。

简单示例:

 

二、索引操作

这里说的索引指的是行索引或者行标签,Pandas中关于行索引有许多巧妙且实用的用法,能帮助我们更好的进行数据分析。

对于索引的使用,即可以像Numpy中那样去操作Pandas中的索引,也可以使用iloc和loc去操作索引,区别在于iloc只能用于原始的0到n-1索引,而loc可以将自己指定的行标签像索引一样去操作,具体见示例代码。

 

三、常用方法

因为Pandas的核心是Numpy库,所以Numpy中的一些特色用法在Pandas中也是能用,比如通过算术运算符实现对每个元素的加减乘除等运算,以及使用max、mean等统计方法在Pandas中都是支持的。

以下列举一些DataFrame和Series的常用操作和方法(具体的参数使用请参考对应的帮助文档或官方API文档),为了简化表示,df代表DataFrame对象,s代表Series对象,具体使用效果见代码示例。

  • [df/s]+3:就像Numpy中的数组操作一样,表示对表格中的每个元素进行加法运算,当然,其他的算术运算也是可以的。(这里的3只是举例用的数字)
  • [df/s].max():返回表格中各列的最大值。
  • [df/s].min():返回表格中各列的最小值。
  • [df/s].mean():返回表格中各列的平均值。
  • [df/s].replace(to_replace=None, value=None):将表格中的to_replace替换为value。
  • [df/s].append(other):将一个表格添加到另一个表格,返回一个合并的新表格。
  • [df/s].drop(labels=None, axis=0, index=None, columns=None):删除指定内容。
  • [df/s].drop_duplicates():删除重复值,可以使用subset参数删除指定列的重复值。
  • [df/s].isnull():判断表格是否为空。
  • [df/s].fillna(value):将空值填充为指定值。
  • pd.cut(x, bins, labels=None):按照bins参数给数组x分段,如果x是一个具体的数字,则按照这个值来平均分成x段,如果x是一个列表,则按照列表的区间来分段,同时可已使用labels给每个区间指定一个label。
  • df.describe():将表格中数据类型为数字的元素筛选出来,然后按列进行一些简单的统计。
  • df.cov():计算斜方差。
  • df.corr():相关系数,结果在[-1, 1]之间,1表示两者的变化趋势是相同的,-1则表示变化趋势是相反的,0则表示变化趋势完全不相关。
  • df.copy()或s.copy():返回一个表格的副本。
  • df.sort_values(by, ascending=True):按照by参数指定的列进行排序,可以使用ascending参数指定以升序排序。
  • s > 3:返回指定列的条件判断结果的布尔索引,用法和Numpy一样。(这里的3只是举例用的数字)
  • s.value_counts(ascending=False, bins=None):对列中的每个值进行个数统计,可以使用ascending参数指定统计结果以升序排列,使用bins参数让统计结果分段显示。
  • s.str.lower():转化为小写。
  • s.str.upper():转化为大写。
  • s.str.len():返回字符串的长度。
  • s.str.strip():取出两边空白内容,其他的还有lstrip()和rstrip()。
  • s.str.replace(pat, repl):将字符串中的pat替换为repl。
  • s.str.split(pat=None, expand=False):将字符串根据pat分隔,返回一个DataFrame对象,如果指定expand为True,会将DataFrame“拉直”变为一个Series对象。
  • s.str.contains(pat):判断是否包含指定值pat。
  • s.str.get_dummies(sep='|'):指定分隔符,并返回一个DataFrame对象,这个方法常用于关联分析。

 

四、SQL功能

Pandas中有一些方法能实现像SQL一样的功能,如groupby方法可以实现SQL中的分组功能,merge方法可以实现SQL中的表连接功能,具体见示例代码。

 

五、透视表

所谓透视表,就是使用pivot方法或pivot_table方法从原本的表格中抽取3列内容并将其转换为另一个表格,具体效果看了示例就明白了。

 

六、时间处理

Pandas中有一套自己的时间字符串处理方法,而且使用起来也很方便,如pd.Timestamp可以将字符串转换为时间戳,pd.Timedelta可以进行时间的加减运算,pd.to_datetime可以将字符串转为为日期。如果遇到了时间格式字符串,建议使用Pandas自带的处理方式。

 

七、批量处理map和apply

如果想要对表格中某行或某列的元素执行同一个操作,可以使用map方法, 而想要对表格中所有行或所有列都执行同一个操作,则可以使用apply方法。

 

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服