Pandas学习笔记(1)
这是关于pandas库的学习笔记,观看的视频教材为Python数据分析与展示
1.数据类型
Pandas库的两个主要操作的数据类型为Series和DataFrame
Series主要是一个一维的数据类型,而DataFrame对应为一个多维的数据类型
Pandas和Numpy的对比
| Numpy | Pandas |
|---|---|
| 基础数据类型 | 扩展数据类型 |
| 关注数据的结构表达 | 专注数据的应用表达 |
| 纬度:数据间关系 | 数据与索引间关系 |
2.Series数据类型
Series可以通过Python列表创建、标量值创建、Python字典创建、ndarray(Numpy数据类型)、其他函数创建
#从标量值创建
s=pd.Series(25,index=['a','b','c'])
print(s)
#通过字典创建一个Series
d=pd.Series({'a':9,'b':8,'c':7})
print(d)
#通过字典构建不同顺序的Series,NaN表示空,这个值不存在
e=pd.Series({'a':9,'b':8,'c':7},index=['c','a','b','d'])
print(e)
#通过ndarray创建
n=pd.Series(np.arange(5))
print(n)
m=pd.Series(np.arange(5),index=np.arange(9,4,-1))
print(m)
3.Series的基本操作
Series类型报错index和values两个部分
Series类型的操作类似ndarray类型
Series类型的操作类似Python字典数据类型
Series的index的数据类型是一个独有的index的类 Series的values是numpy的格式数据类型
# 这里创建了一个Series
b=pd.Series([9,8,7,6],['a','b','c','d'])
#b.index表示b的索引,b.values表示b的数据
print(b.index)
print(b.values)
'''
运行结果:
Index(['a', 'b', 'c', 'd'], dtype='object')
[9 8 7 6]
'''
Series的Index有两种,一种是自定义的索引,另一种是numpy自动索引,两者不能混用
- Series类型的操作类似于ndarray类型
- 索引方法相同,采用[]
- Numpy中运算和操作可用于Series类型
- 可以通过自定义索引的列表进行切片
- 可以通过自动索引进行切片,如果存在自定义索引,则一同被切片
范例1
numpy操作可以应用在Series上,但是需要注意得是,返回的结果仍然是一个Series数据类型,但是如果只是单独索引一个数字,那么返回的数据类型是一个普通的numpy数据类型,由此可见,pandas的Series数据类型本质上是一个numpy数据加上一个index类型,所以其适用于numpy操作,但是又有Series的特点
b=pd.Series([9,8,7,6],['a','b','c','d'])
print(b[:3])
#输出所有大于中位数的元素
print(b[b>b.median()])
#所有所有元素求指数 输出的结果还是一个Series结果
print(np.exp(b))
'''
输出结果:
a 9
b 8
c 7
dtype: int64
a 9
b 8
dtype: int64
a 8103.083928
b 2980.957987
c 1096.633158
d 403.428793
dtype: float64
'''
范例2
Series的Python字典类型的操作
- 通过自定义索引访问
- 保留字in操作
- 使用.get()方法
Numpy是基于纬度的运算,Series是基于索引的运算
b=pd.Series([9,8,7,6],['a','b','c','d'])
print('c' in b)
#保留字in不会判断自动索引
print(0 in b)
#获得一个f的值,如果不存在就返回新建的值
print(b.get('f',100))
print(b)
#Series的对齐操作
a=pd.Series([1,2,3],['c','d','e'])
b=pd.Series([9,8,7,6],['a','b','c','d'])
print(a+b)
'''
输出结果:
True
False
100
a 9
b 8
c 7
d 6
dtype: int64
a NaN
b NaN
c 8.0
d 8.0
e NaN
dtype: float64
'''
范例3
Series的name属性,Series对象和索引都可以有一个名字,存储在属性.name中
#Series的name属性,Series对象和索引都可以有一个名字,存储在属性.name中
b=pd.Series([9,8,7,6],['a','b','c','d'])
print(b.name)
b.name='Series对象'
b.index.name="索引树"
print(b)
'''
输出结果:
None
索引树
a 9
b 8
c 7
d 6
Name: Series对象, dtype: int64
'''
范例4
Series的修改,是立刻修改
#Series类型的修改
b=pd.Series([9,8,7,6],['a','b','c','d'])
b['a']=15
b.name="Series"
print(b)
b.name="New Series"
b['b','c']=20
print(b)
'''
输出结果:
a 15
b 8
c 7
d 6
Name: Series, dtype: int64
a 15
b 20
c 20
d 6
Name: New Series, dtype: int64
'''
4.Series数据类型总结
Series是一维带标签的数组
Series基本操作类似ndarray和字典,根据索引对齐.