简介
pandas 是基于numpy构建的,让以numpy为中心的应用变得更加简单。
#pandas 导入
import pandas as pd
# pandas的两种数据结构
from pandas import Series, DataFrame
一、pandas的两种数据结构
1、Series
Series是一种类似于一维数组的对象,它是由一组数据(各种Numpy数据类型)以及与之相关的数据标签(即索引组成)。仅由一组数据即可产生最简单的Series。
obj = pd.Series([1, 3, 4, 5.6])
obj
# 输出
0 1.0
1 3.0
2 4.0
3 5.6
dtype: float64
Series的字符串表现形式为:索引在左边,值在右边。由于没有设定索引,会自动创建由0到N-1的整数型索引。可以通过Series的values和index属性来获取数组的表示形式和索引对象。
print(obj.values)
print(obj.index)
#输出
[1. 3. 4. 5.6]
RangeIndex(start=0, stop=4, step=1)
对Series的各个数据点设置索引值
obj1 = pd.Series([1, 3, 4, 5.6], index=['Bob', 'Joe', 'Will', 'Jack'])
obj1
# 输出:
Bob 1.0
Joe 3.0
Will 4.0
Jack 5.6
dtype: float64
与普通的Numpy数组相比,可以通过索引的方式选取Series中的单个或一组值
obj1['Bob']
# 输出:1.0
obj1[['Bob', 'Joe']]
# 输出:
Bob 1.0
Joe 3.0
dtype: float64
进行Numpy数组运算(如根据布尔型数组进行过滤、标量乘法、应用数学函数等)都会保留索引和值之间的链接。
obj1[obj1>2]
# 输出
Joe 3.0
Will 4.0
Jack 5.6
dtype: float64
obj1*2
# 输出
Bob 2.0
Joe 6.0
Will 8.0
Jack 11.2
dtype: float64
还可以将Series看成是一个定长的有序字典,因为它是索引值到数据的一个映射。
'Bob' in obj1
# 输出:True
# 传入一个字典,则series中的索引就是原字典的键
color = {
'red': 2, 'green':5, 'black':4}
obj2 = pd.Series(color)
obj2
# 输出:
red 2
green 5
black 4
dtype: int64
color2 = ['red', 'green', 'orange', 'yellow']
obj3 = pd.Series(obj2, index=color2)
obj3
#输出
red 2.0
green 5.0
orange NaN
yellow NaN
dtype: float64
在pandas中使用NaN表示缺失值,可以用pd.isnull() 和pd.notnull() 来检测缺失值
pd.isnull(obj3)
# 等价于 obj3.isnull()
# 输出:
red False
green False
orange True
yellow True
dtype: bool
pd.notnull(obj3)
# 等价于 obj3.notnull()
# 输出:
red True
green True
orange False
yellow False
dtype: bool
Series还有一个重要的功能是在算术运算中会自动对齐不同索引的数据,比如上面的obj2 和obj3
另外,Series对象本身及其索引都有一个name属性,该属性跟pandas其他的关键功能关系密切
obj3.name = 'number'
obj3.index.name = 'color'
obj3
# 输出
color
red 2.0
green 5.0
orange NaN
yellow NaN
Name: number, dtype: float64
Series的索引可以通过赋值的方式就地修改
obj3.index=['Bob', 'Joe', 'Will', 'Jack']
obj3
# 输出
Bob 2.0
Joe 5.0
Will NaN
Jack NaN
Name: number, dtype: float64
2、DataFrame
DataFrame 是一个表格型的数据结构,含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,可以看做由Series组成的字典。DataFrame中面向行和列的操作是平衡的。
构建DataFrame
传入一个由等长列表或Numpy数组组成的字典
data =