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