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

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

为了简化表示,本文示例中的pd表示pandas库,即import pandas as pd。数据结构

 

1、基础数据结构DataFrame和Seriesapp

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

1. 建立DataFrame和Seriesspa

一个DataFrame能够看做是由行索引、列名及数据(二维数组)三部分构成,对于行索引,在Pandas中的处理是比较特殊的,好比有n行数据,默认状况下,行索引会是咱们熟悉的从0到n-1的索引号,可是咱们也能够本身指定每一行的行索引,或者说是行标签,经过行标签一样也能取到对应行的数据。固然,列名若是没有指定,一样是0到n-1的序号。3d

经过列表建立DataFrame:对象

经过字典建立DataFrame:blog

经过文件建立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():查看表格的一个简单汇总信息,包括有多少行、有多少列、每列的数据类型等信息。

简单示例:

 

2、索引操做

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

对于索引的使用,便可以像Numpy中那样去操做Pandas中的索引,也可使用iloc()方法和loc()方法去操做索引,区别在于iloc()方法只能用于原始的0到n-1索引,而loc()方法能够将本身指定的行标签像索引同样去操做,具体见示例代码。

 

3、经常使用方法

由于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对象,这个方法经常使用于关联分析。

 

4、SQL功能

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

 

5、透视表

所谓透视表,就是使用pivot()方法或pivot_table()方法从本来的表格中抽取三列内容并将其转换为另外一个表格,以便更直观、更方便地去观察和分析这三列数据,具体效果看了示例就明白了。

 

6、时间处理

Pandas中有一套本身的时间字符串处理方法,并且使用起来也很方便,如pd.Timestamp()能够将字符串转换为时间戳,pd.Timedelta()能够进行时间的加减运算,pd.to_datetime()能够将字符串转换为日期。若是遇到了时间格式字符串,建议优先考虑Pandas自带的时间处理方式。

 

7、批量处理map和apply

若是想要对表格中某行或某列的全部元素执行同一个操做,可使用map()方法, 而想要对表格中全部行或全部列都执行同一个操做,则可使用apply()方法。

相关文章
相关标签/搜索