Series对象(一)
导入本笔记需要用的包
import pandas as pd
import numpy as np
创建Series对象
# 创建一个Series对象
pd.Series()
# 用值填充Series对象
ice_cream_flavors = [
"Chocolate",
"Vanilla",
"Strawberry",
"Rum Raisin"
]
pd.Series(ice_cream_flavors)
# Series构造函数定义了6个形参:data、index、dtype、name、copy和fastpath
# 所以可以按照顺序填入,也可以用下面这种方式
pd.Series(data = ice_cream_flavors)
# 自定义索引
# 除了用前面的数字进行索引,我们还可以自定义索引
days_of_week = ("Monday", "Wednesday", "Friday", "Wednesday")
pd.Series(data = ice_cream_flavors, index = days_of_week)
# 创建带有缺失值的Series
temperatures = [25, 20, np.nan, 30]
pd.Series(temperatures)
Series与字典的差异就是Series中的索引可以重复,比如上面的Wednesday
同时,用不同的数据类型来创建Series,Series的类型也会不同
检索头和尾
# 以5为增量生成0~500范围内的100个值,然后传递给Series构造函数
values = range(0, 500, 5)
nums = pd.Series(values)
nums
# 查看头部,括号中的数字指查看前几个,默认为5个
nums.head(3)
# 查看尾部,括号中的数字指查看前几个,默认为5个
nums.tail(6)
数学运算
统计操作
numbers = pd.Series([1, 2, 3, np.nan, 4, 5])
numbers
# 统计非空值个数
print(f"非空值个数:{numbers.count()}")
# 值相加
print(f"和为:{numbers.sum()}")
# 默认会忽略缺失值,但也可以通过设置skipna参数来包含缺失值
print(f"包含缺失值的和为:{numbers.sum(skipna=False)}")
# min_count参数可以设置,有效值最小数量,必须大于这个数才会求和
print(f"不满足min_count求和:{numbers.sum(min_count=6)}")
# 值相乘
print(f"乘积为:{numbers.product()}")
# 同样的也可以设置min_count等
# 累积和
print(f"累积和:{numbers.cumsum()}")
# 百分比变化,当前索引值与上一个索引对应值的差值,除以上一个索引对应值
print(f"百分比变化:{numbers.pct_change()}")
# 平均值
print(f"平均值为:{numbers.mean()}")
# 中间数
print(f"中间数为:{numbers.median()}")
# 标准差
print(f"标准差为:{numbers.std()}")
# 最大值最小值
print(f"最大值为:{numbers.max()},最小值为:{numbers.min()}")
# 总结,返回对Series的统计评估,包括技术、平均值、标准差等
print(f"总结:{numbers.describe()}")
# 从Series中随机挑选各种值,形成一个新的Series,括号中的数字是挑选几个
numbers.sample(3)
# unique方法返回一个NumPy ndarry,其中包含Series中的唯一值,即求集合
author = pd.Series(
["A", "B", "C", "D", "A"]
)
author.unique()
注意,只要数据源中有缺失值,Pandas就会讲整数强制转化为浮点数
算数运算
s1 = pd.Series(data = [5, np.nan, 15], index = ["A", "B", "C"])
# 加法
s1 + 3
s1.add(3)
# 减法
s1 - 5
s1.sub(5)
s1.subtract(5)
# 乘法
s1 * 2
s1.mul(2)
s1.multiply(2)
# 除法
s1 / 2
s1.div(2)
s1.divide(2)
# 整除
s1 // 4
s1.floordic(4)
同一个分类中的不同表述方式最终实现的效果是一样的
关注公众号小辛到处学,发送1,获取文中的数据资源