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方法。

 

文章来源于网络,如有侵权请联系站长QQ61910465删除
本文版权归去快排Seo www.SEOgurublog.com 所有,如有转发请注明来出,竞价开户托管,seo优化请联系QQ▷61910465