经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python » 查看文章
Pandas中Series的属性,方法,常用操作使用案例
来源:jb51  时间:2022/7/25 19:15:59  对本文有异议

包的引入:

  1. import numpy as np
  2. import pandas as pd

1. Series 对象的创建

1.1 创建一个空的 Series 对象

  1. s = pd.Series()
  2. print(s)
  3. print(type(s))

1.2 通过列表创建一个 Series 对象

需要传入一个列表序列

  1. l = [1, 2, 3, 4]
  2. s = pd.Series(l)
  3. print(s)
  4. print('-'*20)
  5. print(type(s))

1.3 通过元组创建一个 Series 对象

需要传入一个元组序列

  1. t = (1, 2, 3)
  2. s = pd.Series(t)
  3. print(s)
  4. print('-'*20)
  5. print(type(s))

1.4 通过字典创建一个 Series 对象

需要传入一个字典

  1. m = {'zs': 12, 'ls': 23, 'ww': 22}
  2. s = pd.Series(m)
  3. print(s)
  4. print('-'*20)
  5. print(type(s))

1.5 通过 ndarray 创建一个 Series 对象

需要传入一个 ndarray

  1. ndarr = np.array([1, 2, 3])
  2. s = pd.Series(ndarr)
  3. print(s)
  4. print('-'*20)
  5. print(type(s))

1.6 创建 Series 对象时指定索引

index:用于设置 Series 对象的索引

  1. age = [12, 23, 22, 34]
  2. name = ['zs', 'ls', 'ww', 'zl']
  3. s = pd.Series(age, index=name)
  4. print(s)
  5. print('-'*20)
  6. print(type(s))

1.7 通过一个标量(数)创建一个 Series 对象

  1. num = 999
  2. s = pd.Series(num, index=[1, 2, 3, 4])
  3. print(s)
  4. print('-'*20)
  5. print(type(s))

  1. ndarr = np.arange(0, 10, 2)
  2. s = pd.Series(5, index=ndarr)
  3. print(s)
  4. print('-'*20)
  5. print(type(s))

2. Series 的属性

2.1 values ---- 返回一个 ndarray 数组

  1. l = [11, 22, 33, 44]
  2. s = pd.Series(l)
  3. print(s)
  4. print('-'*20)
  5. ndarr = s.values
  6. print(ndarr)
  7. print('-'*20)
  8. print(type(ndarr))

2.2 index ---- 返回 Series 的索引序列

  1. d = {'zs': 12, 'ls': 23, 'ww': 35}
  2. s = pd.Series(d)
  3. print(s)
  4. print('-'*20)
  5. idx = s.index
  6. print(idx)
  7. print('-'*20)
  8. print(type(idx))

2.3 dtype ---- 返回 Series 中元素的数据类型

  1. d = {'zs': 12, 'ls': 23, 'ww': 35}
  2. s = pd.Series(d)
  3. print(s)
  4. print('-'*20)
  5. print(s.dtype)

2. 4 size ---- 返回 Series 中元素的个数

  1. d = {'zs': 12, 'ls': 23, 'ww': 35}
  2. s = pd.Series(d)
  3. print(s)
  4. print('-'*20)
  5. print(s.size)

2.5 ndim ---- 返回 Series 的维数

  1. d = {'zs': 12, 'ls': 23, 'ww': 35}
  2. s1 = pd.Series(d)
  3. print(s1)
  4. print('-'*20)
  5. print(s1.ndim)
  6. l = [[1, 1], [2, 2], [3, 3]]
  7. s2 = pd.Series(l)
  8. print(s2)
  9. print('-'*20)
  10. print(s2.ndim)

2.6 shape ---- 返回 Series 的维度

  1. d = {'zs': 12, 'ls': 23, 'ww': 35}
  2. s1 = pd.Series(d)
  3. print(s1)
  4. print('-'*20)
  5. print(s1.shape)
  6. print()
  7.  
  8. l = [[1, 1], [2, 2], [3, 3]]
  9. s2 = pd.Series(l)
  10. print(s2)
  11. print('-'*20)
  12. print(s2.shape)

3. Series 的方法

3.1 mean() ---- 求算术平均数

  1. l = [12, 23, 24, 34]
  2. s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
  3. print(s)
  4. print()
  5. print(s.mean())

3.2 min() max() ---- 求最值

  1. l1 = [12, 23, 24, 34]
  2. s1 = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
  3. print(s1)
  4. print()
  5. print(s1.max())
  6. print(s1.min())
  7. print()
  8. l2 = ['ac', 'ca', 'cd', 'ab']
  9. s2 = pd.Series(l2)
  10. print(s2)
  11. print()
  12. print(s2.max())
  13. print(s2.min())

3.3 argmax() argmin() idxmax() idxmin() ---- 获取最值索引

  1. l1 = [12, 23, 24, 34]
  2. s1 = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
  3. print(s1)
  4. print()
  5. # argmax() -- 最大值的数字索引
  6. # idxmax() -- 最大值的标签索引
  7. # 两个都不支持字符串类型的数据
  8. print(s1.max(), s1.argmax(), s1.idxmax())
  9. print(s1.min(), s1.argmin(), s1.idxmin())

3.4 median() ---- 求中位数

  1. l = [12, 23, 24, 34]
  2. s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
  3. print(s)
  4. print()
  5. print(s.median())

3.5 value_counts() ---- 求频数

  1. l = [12, 23, 24, 34]
  2. s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
  3. print(s)
  4. print()
  5. print(s.value_counts())

3.6 mode() ---- 求众数

  1. l = [12, 23, 24, 34]
  2. s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
  3. print(s)
  4. print()
  5. print(s.mode())
  6. print()
  7. l = [12, 23, 24, 34, 34]
  8. s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl', 'zq'])
  9. print(s)
  10. print()
  11. print(s.mode())

3.7 quantile() ---- 求四分位数

四分位数:把数值从小到大排列并分成四等分,处于三个分割点位置的数值就是四分位数。

需要传入一个列表,列表中的元素为要获取的数的对应位置

  1. l = [1, 1, 2, 2, 3, 3, 4, 4]
  2. s = pd.Series(l)
  3. print(s)
  4. print()
  5. print(s.quantile([0, .25, .50, .75, 1]))

3.8 std() ---- 标准差

总体标准差是反映研究总体内个体之间差异程度的一种统计指标。
总体标准差计算公式:

由于总体标准差计算出来会偏小,所以采用 ( n − d d o f ) (n-ddof) (n−ddof)的方式适当扩大标准差,即样本标准差。
样本标准差计算公式:

  1. l = [1, 1, 2, 2, 3, 3, 4, 4]
  2. s = pd.Series(l)
  3. print(s)
  4. print()
  5. # 总体标准差
  6. print(s.std())
  7. print()
  8. print(s.std(ddof=1))
  9. print()
  10. # 样本标准差
  11. print(s.std(ddof=2))

3.9 describe() ---- 统计 Series 的常见统计学指标结果

  1. l = [1, 1, 2, 2, 3, 3, 4, 4]
  2. s = pd.Series(l)
  3. print(s)
  4. print()
  5. print(s.describe())

3.10 sort_values() ---- 根据元素值进行排序

ascending:True为升序(默认),False为降序 3.10.1 升序

  1. l = [4, 2, 1, 3]
  2. s = pd.Series(l)
  3. print(s)
  4. print()
  5. s = s.sort_values()
  6. print(s)

3.10.2 降序

  1. l = [4, 2, 1, 3]
  2. s = pd.Series(l)
  3. print(s)
  4. print()
  5. s = s.sort_values(ascending=False)
  6. print(s)

3.11 sort_index() ---- 根据索引值进行排序

ascending:True为升序(默认),False为降序

3.11.2 升序

  1. l = [12, 23, 24, 34]
  2. s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
  3. print(s)
  4. print()
  5. s = s.sort_index()
  6. print(s)

3.11.2 降序

  1. l = [12, 23, 24, 34]
  2. s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
  3. print(s)
  4. print()
  5. s = s.sort_index()
  6. print(s)

3.12 apply() ---- 根据传入的函数参数处理 Series 对象

需要传入一个函数参数

  1. # x 为当前遍历到的元素
  2. def func(x):
  3. if (x%2==0): return x+1
  4. else: return x
  5.  
  6. l = [12, 23, 24, 34]
  7. s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
  8. print(s)
  9. print()
  10. # 调用 apply 方法,会将 Series 中的每个元素带入 func 函数中进行处理
  11. s = s.apply(func)
  12. print(s)

3.13 head() ---- 查看 Series

对象的前 x 个元素 需要传入一个数 x ,表示查看前 x 个元素,默认为前5个

  1. l = [12, 23, 24, 34]
  2. s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
  3. print(s)
  4. print()
  5. # head(x) 查看 Series 对象的前 x 个元素
  6. print(s.head(2))

3.14 tail() ---- 查看 Series 对象的后 x 个元素

需要传入一个数 x ,表示查看后 x 个元素,默认为后5个

  1. l = [12, 23, 24, 34]
  2. s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
  3. print(s)
  4. print()
  5. # tail(x) 查看 Series 对象的后 x 个元素
  6. print(s.tail(2))

4. Series 的常用操作

4.1 Series 对象的数据访问

4.1.1 使用数字索引进行访问

4.1.1.1 未自定义索引
  1. l = [12, 23, 24, 34]
  2. s = pd.Series(l)
  3. print(s)
  4. print()
  5. print(s[0])
  6. print()
  7. print(s[1:-2])
  8. print()
  9. print(s[::2])
  10. print()
  11. print(s[::-1])

4.1.1.2 自定义索引
  1. l = [12, 23, 24, 34]
  2. s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
  3. print(s)
  4. print()
  5. print(s[0])
  6. print()
  7. print(s[1:-2])
  8. print()
  9. print(s[::2])
  10. print()
  11. print(s[::-1])

4.1.2 使用自定义标签索引进行访问

  1. l = [12, 23, 24, 34]
  2. s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
  3. print(s)
  4. print()
  5. print(s['zs'])
  6. print()
  7. # 自定义标签索引进行切片包含开始与结束位置
  8. print(s['ls':'zl'])
  9. print()
  10. print(s['zs':'zl':2])
  11. print()
  12. # 注意切边范围的方向与步长的方向
  13. print(s['zl':'zs':-1])

4.1.3 使用索引掩码进行访问

  1. l = [12, 23, 24, 34]
  2. s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
  3. print(s)
  4. print()
  5. idx = (s%2==0)
  6. print(idx)
  7. print()
  8. # 索引掩码(也是一个数组)
  9. # 索引掩码个数与原数组的个数一致,数组每个元素都与索引掩码中的元素一一对应
  10. # 数组每个元素都对应着索引掩码中的一个True或False
  11. # 只有索引掩码中为True所对应元素组中的元素才会被选中
  12. print(s[idx])

4.1.4 一次性访问多个元素

  1. l = [12, 23, 24, 34]
  2. s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
  3. print(s)
  4. print()
  5. # 选出指定索引对应的元素
  6. print(s[['zs', 'ww']])
  7. print()
  8. print(s[[1, 2]])

4.2 Series 对象数据元素的删除

4.2.1 pop()

传入要删除元素的标签索引

  1. l = [12, 23, 24, 34]
  2. s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
  3. print(s)
  4. print()
  5. s.pop('ww')
  6. print(s)

4.2.2 drop()

传入要删除元素的标签索引

  1. l = [12, 23, 24, 34]
  2. s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
  3. print(s)
  4. print()
  5. # drop() 会返回一个删除元素后的新数组,不会对原数组进行修改
  6. s = s.drop('zs')
  7. print(s)

4.3 Series 对象数据元素的修改

4.3.1 通过标签索引进行修改

  1. l = [12, 23, 24, 34]
  2. s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
  3. print(s)
  4. print()
  5. s['zs'] = 22
  6. print(s)

4.3.2 通过数字索引进行修改

  1. l = [12, 23, 24, 34]
  2. s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
  3. print(s)
  4. print()
  5. s[1] = 22
  6. print(s)

4.4 Series 对象数据元素的添加

4.4.1 通过标签索引添加

  1. l = [12, 23, 24, 34]
  2. s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
  3. print(s)
  4. print()
  5. s['ll'] = 22
  6. print(s)

4.4.2 append()

需要传入一个要添加到原 Series 对象的 Series 对象

  1. l = [12, 23, 24, 34]
  2. s = pd.Series(l, index=['zs', 'ls', 'ww', 'zl'])
  3. print(s)
  4. print()
  5. # 可以添加已经存在的索引及其值
  6. s2 = pd.Series([11, 13], index=['zs', 'wd'])
  7. # append() 不会对原数组进行修改
  8. s = s.append(s2)
  9. print(s)
  10. print()
  11. print(s['zs'])

到此这篇关于Pandas中Series的属性,方法,常用操作使用案例的文章就介绍到这了,更多相关Pandas中Series属性内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号