(二)Pandas数据类型及常用命令

本文详细介绍了Pandas库,强调了其在数据分析领域的优势,如数据对齐、整合功能和处理缺失值的能力。文章涵盖Pandas的数据类型Series和DataFrame,包括它们的创建、索引操作、数据计算、连接和统计分析。此外,还提到了map、apply等函数在数据处理中的应用,以及如何处理缺失值和进行DataFrame的排序、合并。
摘要由CSDN通过智能技术生成

一、整体介绍

前面我们介绍了numpy,但numpy本身并没有多么高级的数据分析功能,但是理解numpy数组以及面向数组的计算有助于你更加高效地使用诸如pandas之类的工具。numpy要介绍的才是我们在数据分析领域使用的非常多的一个库——pandas

相比于numpy,pandas还提供了一些NumPy所没有的更加领域特定的功能,如时间序列处理等。

对于大部分数据分析的应用而言,关注的功能主要集中在:

  • 用于数据整理和清理、子集构造和过滤、转换等快速的矢量化数组运算
  • 常用的数组算法,如排序、唯一化、集合运算等
  • 高效的描述统计和数据聚合/摘要运算
  • 用于异构数据集的合并/连接运算的数据对齐和关系型数据运算
  • 将条件逻辑表述为数组表达式(而不是带有if-elif-else分支的循环)
  • 数据的分组运算(聚合、转换、函数应用等)

1.1 Pandas 优点

1)具备 按轴 自动或显式 数据对齐功能,可防止许多 由于数据未对齐 以及 来自不同数据源(索引方式不同)的数据 而导致的常见错误

2)集成时间序列功能

3)既能处理时间序列数据 也能处理 非时间序列数据的数据结构

4)数学计算和约简(比如对某个轴求和)可以根据不同的元数据(周编号)进行

5)灵活处理 缺失数据

6)合并 及 其他出现在常见数据库中的 【关系型运算】

1.2 Pandas的数据类型

Series 和 DataFrame

1.3 Series 和 DataFrame 共性

索引和列信息查看

pandas数据类型 与 numpy ndarray 的 最大区别是 有自定义索引(Series有index,DataFrame有indexcolumn

df.index 
df.columns 
df.index.name 
df.column.name 

df.values  # values 属性会以ndarray的形式返回DataFrame中的数据
df.name  # 显示列标签

# in关键字 判断某个index或column是否存在
'index1' in df.index 
'column1' in df.columns 

标量化计算

obj[obj > 0] 
obj * 2 
np.exp(obj) 

查看是否包含某个元素值

'b' in obj 
'c' in obj2 

二、Series和DataFrame常用操作

2.1 Series

当为series对象,指定索引的时候,会自动遵循 索引对齐 原则
-----> 同理,对两个index不太一致的 series对象,进行合并处理的时候,index也会遵循 自动对齐 的原则

2.1.1 创建Series

Series是一种类似于一维数组的对象,它是由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成,仅由一组数据即可产生最简单的Series。

  • 创建Series时,可以自定义索引:
obj = Series([4, 7, -5, 3], index = [‘d’, ‘b’, ‘a’, ‘c’])
  • 如果数据别存放在一个Python字典中,也可以直接通过这个字典来创建Series。(可自行定义索引顺序,若传入的索引列表中有的项在字典里找不到,则对应行的值为NaN)
sdata = Python字典
obj = Series(sdata)
  • 对于许多应用而言,Series最重要的一个功能是:它在算术运算中会自动对齐不同索引的数据。

  • Series对象本身及其索引都有一个name属性,该属性跟pandas其他的关键功能关系非常密切。

  • Series的索引可以通过赋值的方式就地修改。(索引可以修改)

2.1.2 Series的索引操作

只适用于Series,因为它只有一列值,默认根据该列值排序即可。

.argmin(), .argmax()   # 计算数据最大值, 最小值所在位置的索引位置(自动索引)
.idxmin(), .idxmax()   # 计算数据最大值, 最小值所在位置的索引(自定义索引)

如果是针对DataFrame的操作,可以将DataFrame的指定列提取出来成为Series再判断。

df['value1'].argmin()
df['value1'].argmax()
df['value1'].idmin()
df['value1'].idmax()

NumPy数组运算(如根据布尔型数组进行过滤、标量乘法、应用数学函数等)都会保留索引和值之间的链接。

2.2 DataFrame

2.2.1 创建DataFrame

创建DataFrame对象 用np.DataFrame方法

如果传递给 np.DataFrame方法的 是一个嵌套字典,则最外层字典的键 作为列索引,内层键 作为行索引
------> 内层字典的键 会被合并、排序 以形成最终的索引。如果显式指定了索引,则还是会根据 索引对齐 原则。

  • 可以输入给 DataFrame 构造函数的 数据
序号 类型 说明
1 二维ndarray 数据矩阵,还可以传入行标和列标
2 由数组、列表或元组组成的字典 每个序列会变成DataFrame的一列,所有序列的长度必须相同
3 Numpy的结构化/记录数组(ndarray) 类似于2
4 由Series组成的字典 每个Series会成为一列,如果没有显式的指定索引,则各Series的索引会被合并成结果的行索引
5 由字典组成的字典 各内层字典或成为一列,键会被合并成结果的行索引,类似于4
6 字典或Series的列表 各项会成为DataFrame的一行,字典键或Series索引的并集将会成为DataFrame的列标
7 由列表或元组组成的列表 类似于1
8 另一个DataFrame 改DataFrame的索引将会被沿用,除非显示指定了其他索引
9 Numpy的MaskedArray 类似于1,只是掩码值在结果DataFrame会变成NA/缺失值
  • 实例(创建及reindex)
import pandas as pd

d1 = {
   '城市': ['北京', '上海', '广州', '深圳', '沈阳'],
      '环比': [101.5, 101.2, 101.3, 102.0, 100.1],
      '同比': [120.7, 127.3, 119.4, 140.9, 101.3],
      '定基': [121.4, 127.8, 120.0, 145.5, 101.6]}

d = pd.DataFrame(d1, index = ['c1', 'c2', 'c3', 'c4', 'c5'])

print(d, '\n', d.shape)

#重排索引 
e = d.reindex(index = ['c5', 'c4', 'c3', 'c2', 'c1'], columns = [<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值