[数据分析工具] Pandas 功能介绍

原文:https://zhuanlan.zhihu.com/p/33230331

如果你在使用 Pandas(PythonData Analysis Library) 的话,下面介绍的对你一定会有帮助的。

首先我们先介绍一些简单的概念

  • DataFrame:行列数据,类似 Excel 的 sheet,或关系型数据库的表
  • series:单列数据
  • axis:0:行,1:列
  • shape:DataFrame的行列数,(行数,列数)

    1. 加载 CSV

    Read_csv 方法有很多参数,有效的利用这些参数可以减轻数据预处理的工作。谁都不愿意做数据清洗,那么我们就在加载数据的时候做一些简单的数据处理

  • 直接加载
    • 无参数加载
    • 选择特定列加载
    • 时间转换加载
  • 分批加载
  • 有时我们可能需要加载的 csv 太大,可能会导致内存爆掉,这时候,我们就需要分批加载数据进行分析、处理

    2. 浏览 DataFrame 数据

  • df.head(n):浏览数据的前 n 行,默认 5 行
  • df.tail(n):浏览数据的末尾 n 行,默认 5 行
  • df.sample(n):随机浏览 n 行数据,默认 5 行
  • df.shape:tuple 类型的数据行列数,(行数,列数)
  • df.describe():计算评估数据的趋势
  • http://df.info():内存和数据类型
  • 3. 在 DataFrame 中增加列

    在 DataFrame 中添加新列的操作很简单,下面介绍几种方式

  • 简单方式
    • 直接增加新列并赋值
      • df['new_column'] = 1
    • 计算方式
      • df['temp_diff'] = df['atemp'] - df['temp']
  • 条件方式
    • 我们仅仅根据风速,简单判断一下人体舒适度,体感比较舒服的温度是 0.3 米/秒
  • 循环方式
    • 我们将 season 转换为具体季节的名称
  • 4. 选择指定单元格

    类似于 Excel 单元格的选择,Pandas 提供了这样的功能,操作很简单,但是我本人理解起来确实没有操作看上去那么简单。Pandas 提供了三个方法做类似的操作,loc,iloc,ix,ix 官方已经不建议使用,所以我们下面介绍 loc 和 iloc

  • loc 根据标签选取loc
    • df.loc[行索引开始位置:行索引结束位置,[列名数组]]
  • iloc 根据索引选取
    • df.iloc[行索引开始位置:行索引结束位置,列索开始位置:列索引结束位置]
  • 选取行数据
    • df.loc[[行索引数组]],df.iloc[[行索引数组]]
  • 注意:

  • 索引开始位置:闭区间
  • 索引结束位置:开区间
  • loc 和 iloc 选取整列数据的时候,看上去与 df[列名数组] 的方式一致,但是其实前者返回的仍然是 DataFrame,后者返回的是 Series

条件过滤

我们需要看第一季度的数据是怎样的,就需要使用条件过滤

体感的舒适适湿度是40-70,我们试着过滤出体感舒适湿度的数据

最后整合上面两种条件,在一季度体感湿度比较舒适的数据

列排序

数据按照某列进行排序

“by”参数可以使用字符串,也可以是列表,ascending 的参数也可以是单个值或者列表

ascending 默认值是 True

列中的每行上的 apply 函数

在前一篇的增加列的部分,根据风速计算人体感觉是否舒适,为了功能的演示,在这里使用 DataFrame 的 apply 方法,他会在指定列的每个值上执行。详见代码:

均值和标准差

我们通过 describe 方法查看的统计信息中均值和方差都是按照列统计呢,这里要说的,既可以按照列,还可以按照行

均值,行 df.mean(axis=0),列df.mean(axis=1)

方差,行 df.std(axis=0),列df.std(axis=1)

DataFrame 转换为 Numpy

DataFrame 合并

连接合并

在两个 df 的结果一致的情况下,我们可以简单两个 df 拼接起来

垂直(行)拼接,pd.concat([df1,df2],axis=0),水平(列)拼接,pd.concat([df1,df2],axis=1)

基于索引关键字合并

Pandas 还提供了像 SQL 一样的连接,内联,外联,左联,右联

作为我们的示例数据,可以唯一标识一行的就是 Datatime 列

merged_df = df_1.merge(df_2, how='left', on='datetime')

在 DataFrame 中查找 NaN

每行有多少 NaN,df.isnull().sum()

Dataframe 中 NaN 的总数,上面统计出来的数量求和,df.isnull().sum().sum()

分组 Group By

分组在数据统计的时候经常使用。特别是统计数量、计算和、求平均值,等等。

我们在这里统计一下每个季度的假期数是多少

在统计一下,每个季度的平均分风速是多少

定义范围

如果我们想根据风力把风的等级区分出来,你可能可快就想到上面刚刚介绍的 apply,不过,现在介绍另外一种方式

通过这两次的分享,我们已经了解了 pandas 数据处理常用的方式方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值