zoukankan      html  css  js  c++  java
  • Python三方库:Pandas(数据分析)

    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.lower():转化为小写。
    • s.upper():转化为大写。
    • s.len():返回字符串的长度。
    • s.strip():去除两边空白内容,其他类似功能还有lstrip()和rstrip()。
    • s.replace(pat, repl):将字符串中的pat替换为repl。
    • s.split(pat=None, expand=False):将字符串根据pat分隔,返回一个DataFrame对象,如果指定expand为True,会将DataFrame“拉直”变为一个Series对象。
    • s.contains(pat):判断是否包含指定值pat。
    • s.get_dummies(sep='|'):指定分隔符,并返回一个DataFrame对象,这个方法常用于关联分析。

    四、SQL功能

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

    五、透视表

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

    六、时间处理

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

    七、批量处理map和apply

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

  • 相关阅读:
    命令行选项
    损坏的RAID5
    Codeforces Round #600 (Div. 2)
    python 数据分析
    xor or and 线段树
    CCPC哈尔滨E题
    二维偏序
    Codeforces Round #592 (Div. 2)
    Codeforces Round #597 (Div. 2)
    pycharm 安装激活
  • 原文地址:https://www.cnblogs.com/guyuyun/p/13296646.html
Copyright © 2011-2022 走看看