pandas学习小结

本文详细介绍了Pandas库中的Series和DataFrame数据结构。Series是一维数组,包含索引和数据;DataFrame是二维表格型数据,具备行和列索引。文章涵盖了如何创建、读取、更新数据,进行算数运算,以及重索引和缺失值处理。此外,还讨论了DataFrame的列选择、赋值、删除和算数操作。内容深入浅出,适合Pandas初学者。
摘要由CSDN通过智能技术生成

Series

Series创建一维数组

"""
Series是一种一维的数组型对象,它包含了一个值序列(与NumPy中的类型相似),并且包含了数据标签,称为索引(index)
"""
# Series数组, 默认索引[0-N]
obj = pd.Series([1, 2, 3, 4, 5])
# 设置索引
obj2 = pd.Series([4, 7, -7, 3], index=['a', 'b', 'c', 'e'])

Series数组读取, 更新数据

"""
 Series 数据读取
 """
obj2 = pd.Series([4, 7, -7, 3], index=['a', 'b', 'c', 'e'])
# 获取value, index
values = obj2.values
index = obj2.index
# 根据索引, 读取某一个值或多个值
result = obj2['a'] 
data = obj2[['a', 'c']] 
# 更新某个索引的值, 是直接在原数组中修改, 不会生成新的数组
obj2['a'] =  7 # 修改一个索引值
ob2[['a', 'b']] = 9 # 修改 a, b数值为 9
obj2[['a', 'b']] = [22, 10]  # 修改a, 为22, b 为10
# 删除数据, 对原数组进行操作
obj2.drop('a')
obj2.drop(['a', 'c'])

reindex 重建索引

"""
Series调用reindex方法时,会将数据按照新的索引进行排列,如果某个索引值之前并不存在,则会引入缺失值, 重建索引, 不会再原数组上进行改变, 而是生成新的数组
"""
import pandas as pd
obj = pd.Series([4.5, 4.3, 4.1, 0.5], index=['d', 'b', 'a', 'c'])
# 重建索引, 生成新的数组
obj2 = obj.reindex(['a', 'b', 'c', 'd'])
"""
数组数据值进行填充: method可选参数允许我们使用诸如ffill等方法在重建索引时插值,ffill方法会将值前向填充
"""
obj3 = pd.Series(['BLUE', 'PURPLE', 'YELLOW'], index=[0, 2, 4])
obj4 = obj3.reindex(range(6), method='ffill')
print(obj4)
# 结果: 
0      BLUE
1      BLUE
2    PURPLE
3    PURPLE
4    YELLOW
5    YELLOW
dtype: object
# 指定填充数据value
bj4 = obj3.reindex(range(6), fill_value='no')

Series数组进行算数运算

# Series进行算数运算, 是会生成一个新的数组, 不会对原数组进行操作
data = obj2 * 2  # 每个元素, 都乘2
result = obj2[obj2 > 4 ] # 筛选数组中大于4的数据
# 判断索引是不是存在Series数组中
result = 'b' in obj2 # 存在True, 否则: False
# 检查数组中是否存在缺失值NA: isnull, notnull 结果相反
result_null = pd.isnull(obj2) # 各个元素进行判断, 是NA : True, 不是NA: 对应位置就是显示False

DataFrame

DataFrame创建一维数组

"""
DataFrame是二维的数组对象, 它既有行索引也有列索引, 尽管DataFrame是二维的,但你可以利用分层索引在DataFrame中展现更高维度的数据
"""
 arr2 = pd.DataFrame({'state': ['ohi', 'ohi', 'nevada'], 'year': [2000, 2001, 2002], 'pop': [1.5, 2.9, 5.9]})
 # 设置行索引(index), 以及列索引(columns), columns: 指定列索引排列顺序, 如果列索引在数据中不存在, 会自动补充NaN数据
 arr2 = pd.DataFrame({'state': ['ohi', 'ohi', 'nevada'], 'year': [2000, 2001, 2002], 'pop': [1.5, 2.9, 5.9]}, index=['a', 'b', 'c'],  columns=['year', 'state', 'pop'])

DataFrame数据读取, 赋值, 删除某一列数据

# head读取DataFrame: 数据的前几行, 默认是前5行
data = arr2.head(2) # 读取数组前2行数据
# 读取某一列数据
result = arr2['year']
# 读取某行某列的一个数据
value = arr2['year']['a']
# 读取所有vlues, 或者列名
 _values = arr2.values
 _columns = arr2.columns
# 读取某一行数据
_loc = arr2.loc['a']
# 赋值一列数据, 如果列名存在就是赋值, 否则就是添加一列数据
arr2['debt'] = 19
# 删除某一列数据, 对原数组进行操作, 不会生成新的数组
del arr2['debt']
arr2.drop('year')
# 没有设置行, 列名, 
arr3 = pd.DataFrame([[1, 2, 3], [4, 9, 0]])
# 读取某一列数据
arr3[1] # 读取第二列数据
# 读取某一个数据
arr[1][0] # 读取的第二列的, 第一行数据 2
 

DataFrame数组重建索引

"""
reindex可以改变行索引、列索引,也可以同时改变二者。当仅传入一个序列时,结果中的行会重建索引

"""
# 修改行索引, 会创建一个新的数组
arr = pd.DataFrame(np.arange(9).reshape((3, 3)), index=['a', 'b', 'c'], columns=['train', 'car', 'bus'])
print(arr)
arr2 = arr.reindex(['a', 'b', 'c', 'd'])
print(arr2)
# 重建列索引, 没有的列, 回赋值NaN
arr3 = arr.reindex(columns=['train',  'car', 'plan'])

DataFrame数组进行算数运算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值