【pandas-汇总2】series常用属性和函数

1.Series常用属性

属性说明
values获取数组
index获取索引
namevalues的name
index.name索引的name


2.Series常用函数

Series可使用ndarray或dict的差不多所有索引操作和函数,集成了ndarray和dict的优点

函数

说明
Series([x,y,...])Series({'a':x,'b':y,...}, index=param1)生成一个Series
Series.copy()复制一个Series 

Series.reindex([x,y,...], fill_value=NaN)

Series.reindex([x,y,...], method=NaN)

Series.reindex(columns=[x,y,...])

重返回一个适应新索引的新对象,将缺失值填充为fill_value

返回适应新索引的新对象,填充方式为method

对列进行重新索引

Series.drop(index)丢弃指定项
Series.map(f)应用元素级函数 
  

排序函数

说明
Series.sort_index(ascending=True)根据索引返回已排序的新对象
Series.order(ascending=True)根据值返回已排序的对象,NaN值在末尾
Series.rank(method='average', ascending=True, axis=0)为各组分配一个平均排名

df.argmax()

df.argmin()

返回含有最大值的索引位置

返回含有最小值的索引位置

reindex的method选项:
    ffill, bfill     向前填充/向后填充
    pad, backfill   向前搬运,向后搬运
rank的method选项
    'average'    在相等分组中,为各个值分配平均排名
    'max','min'   使用整个分组中的最小排名
    'first'      按值在原始数据中出现的顺序排名

3.Series常用属性例程


   
   
  1. # -*- coding: utf-8 -*-
  2. """
  3. @author: 蔚蓝的天空Tom
  4. Aim:pandas.series常用属性的例程
  5. 属性 说明
  6. values 获取数组
  7. index 获取索引
  8. name values的name
  9. index.name 索引的name
  10. """
  11. import pandas as pd
  12. from pandas import Series
  13. if __name__== '__main__':
  14. s = pd.Series([ 'Tom', 'Kim', 'Andy'])
  15. # 0 Tom
  16. # 1 Kim
  17. # 2 Andy
  18. # dtype: object
  19. #数值数组
  20. s.values #['Tom' 'Kim' 'Andy']
  21. #索引序列
  22. s.index #RangeIndex(start=0, stop=3, step=1)
  23. #values的name
  24. s.name #None
  25. #索引的name
  26. s.index.name #None
  27. #设置series的name和index.name
  28. s.name = 'Name'
  29. s.index.name = 'ID'
  30. # ID
  31. # 0 Tom
  32. # 1 Kim
  33. # 2 Andy
  34. # Name: Name, dtype: object
  35. #获取series的name和index.name
  36. s.name #Name
  37. s.index.name #ID

4.Series常用函数例程

4.1创建Series对象


   
   
  1. # -*- coding: utf-8 -*-
  2. """
  3. @author:蔚蓝的天空Tom
  4. Aim:实现Series常用函数的例程---生成Series对象
  5. (1)生成一个Series
  6. Series([x,y,...])Series({'a':x,'b':y,...}, index=param1)
  7. """
  8. import pandas as pd
  9. from pandas import Series
  10. if __name__== '__main__':
  11. #(1)生成一个Series
  12. #Series([x,y,...])
  13. #Series({'a':x,'b':y,...}, index=param1)
  14. #数组创建Series,使用默认整数数值行索引
  15. s = pd.Series([ 'Tom', 'Kim', 'Andy'])
  16. # 0 Tom
  17. # 1 Kim
  18. # 2 Andy
  19. # dtype: object
  20. #数组创建Series,指定行索引index
  21. s = pd.Series([ 'Tom', 'Kim', 'Andy'], index=[ 'No.1', 'No.2', 'No.3'])
  22. # No.1 Tom
  23. # No.2 Kim
  24. # No.3 Andy
  25. # dtype: object
  26. #字典创建Series,使用默认整数数值行索引(索引名称的字典序)
  27. data = { 'No.2': 'Tom', 'No.1': 'Kim', 'No.3': 'Andy'}
  28. s = pd.Series(data)
  29. s.index.name = 'ID'
  30. s.name= 'StudentsInfo'
  31. # ID
  32. # No.1 Kim
  33. # No.2 Tom
  34. # No.3 Andy
  35. # Name: StudentsInfo, dtype: object
  36. #字典创建Series,指定行索引的排序Index
  37. data = { 'No.1': 'Tom', 'No.2': 'Kim', 'No.3': 'Andy'}
  38. ind = [ 'No.3', 'No.2', 'No.1']
  39. s = pd.Series(data, index=ind)
  40. # No.3 Andy
  41. # No.2 Kim
  42. # No.1 Tom
  43. # dtype: object
  44. #字典创建Series,指定行索引的排序index
  45. data = { 'No.1': 'Tom', 'No.2': 'Kim', 'No.3': 'Andy'}
  46. ind = [ 'No.3', 'No.2']
  47. s = pd.Series(data, index=ind)
  48. # No.3 Andy
  49. # No.2 Kim
  50. # dtype: object
  51. #字典创建Series,指定行索引的排序index
  52. data = { 'No.1': 'Tom', 'No.2': 'Kim', 'No.3': 'Andy'}
  53. ind = [ 'No.2', 'No.1', 'No.99']
  54. s = pd.Series(data, index=ind)
  55. # No.2 Kim
  56. # No.1 Tom
  57. # No.99 NaN
  58. # dtype: object
  59. #使用pd.isnull(series)判断series对象是否含有NaN数值
  60. data = { 'No.1': 'Tom', 'No.2': 'Kim', 'No.3': 'Andy'}
  61. ind = [ 'No.2', 'No.1', 'No.99']
  62. s = pd.Series(data, index=ind)
  63. ret = pd.isnull(s)
  64. # No.2 False
  65. # No.1 False
  66. # No.99 True
  67. # dtype: bool
  68. #使用pd.notnull(series)判断series对象是否含有NaN数值
  69. data = { 'No.1': 'Tom', 'No.2': 'Kim', 'No.3': 'Andy'}
  70. ind = [ 'No.2', 'No.1', 'No.99']
  71. s = pd.Series(data, index=ind)
  72. ret = pd.notnull(s)
  73. # No.2 True
  74. # No.1 True
  75. # No.99 False
  76. # dtype: bool

4.2拷贝Series之深拷贝+浅拷贝


   
   
  1. # -*- coding: utf-8 -*-
  2. """
  3. @author:蔚蓝的天空Tom
  4. Aim:实现Series常用函数的例程----拷贝Series,深拷贝和浅拷贝
  5. (2)复制一个Series
  6. Series.copy()
  7. """
  8. import pandas as pd
  9. from pandas import Series
  10. if __name__== '__main__':
  11. #(2)复制一个Series
  12. #Series.copy()
  13. s = pd.Series([ 'Tom', 'Kim', 'Andy'], index=[ 'No.1', 'No.2', 'No.3'])
  14. # No.1 Tom
  15. # No.2 Kim
  16. # No.3 Andy
  17. # dtype: object
  18. #深拷贝series
  19. cpys = s.copy(deep= True)
  20. cpys[ 'No.1'] = 'xxx'
  21. #print(cpys)
  22. # No.1 xxx
  23. # No.2 Kim
  24. # No.3 Andy
  25. # dtype: object
  26. #print(s)
  27. # No.1 Tom
  28. # No.2 Kim
  29. # No.3 Andy
  30. # dtype: object
  31. #浅拷贝series
  32. cpys = s.copy(deep= False)
  33. cpys[ 'No.1'] = 'xxx'
  34. #print(cpys)
  35. # No.1 xxx
  36. # No.2 Kim
  37. # No.3 Andy
  38. # dtype: object
  39. #print(s)
  40. # No.1 xxx
  41. # No.2 Kim
  42. # No.3 Andy
  43. # dtype: object

4.3reindex函数


   
   
  1. # -*- coding: utf-8 -*-
  2. """
  3. @author:蔚蓝的天空Tom
  4. Aim:实现Series常用函数的例程---series.reindex()适应新索引的新对象,不修改源对象,返回新对象
  5. (3)重返回一个适应新索引的新对象,将缺失值填充为fill_value
  6. Series.reindex([x,y,...], fill_value=NaN)
  7. (4)返回适应新索引的新对象,填充方式为method
  8. Series.reindex([x,y,...], method=NaN)
  9. (5)对列进行重新索引
  10. Series.reindex(columns=[x,y,...])
  11. """
  12. import pandas as pd
  13. from pandas import Series
  14. if __name__== '__main__':
  15. #Series.reindex([x,y,...])重返回一个适应新索引的新对象,缺失索引对应数值使用默认值NaN
  16. s = pd.Series([ 'Tom', 'Kim', 'Andy'], index=[ 'No.1', 'No.2', 'No.3'])
  17. rs = s.reindex([ 'No.0', 'No.1', 'No.2', 'No.3', 'No.4'])
  18. #No.0 NaN
  19. #No.1 Tom
  20. #No.2 Kim
  21. #No.3 Andy
  22. #No.4 NaN
  23. #dtype: object
  24. #Series.reindex([x,y,...], fill_value=NaN)重返回一个适应新索引的新对象,缺失索引对应数值使用指定值
  25. s = pd.Series([ 'Tom', 'Kim', 'Andy'], index=[ 'No.1', 'No.2', 'No.3'])
  26. rs = s.reindex([ 'No.0', 'No.1', 'No.2', 'No.3', 'No.4'], fill_value= 'XXX')
  27. #No.0 XXX
  28. #No.1 Tom
  29. #No.2 Kim
  30. #No.3 Andy
  31. #No.4 XXX
  32. #dtype: object
  33. #(4)Series.reindex([x,y,...], method=NaN) 返回适应新索引的新对象,填充方式为method
  34. #ffill或pad: 前向(或进位)填充
  35. #bfill或backfill: 后向(或进位)填充
  36. s = pd.Series([ 'Tom', 'Kim', 'Andy'], index=[ 'No.1', 'No.2', 'No.3'])
  37. rs = s.reindex([ 'No.0', 'No.1', 'No.4', 'No.5'], method= 'ffill') #method='pad'同效果
  38. #No.0 NaN
  39. #No.1 Tom
  40. #No.4 Andy #因为前向填充(取No.3的值Andy作为填充值)
  41. #No.5 Andy #取No.4的值作为填充值
  42. #dtype: object
  43. s = pd.Series([ 'Tom', 'Kim', 'Andy'], index=[ 'No.1', 'No.2', 'No.3'])
  44. rs = s.reindex([ 'No.0', 'No.1', 'No.4', 'No.5'], method= 'bfill')
  45. #No.0 Tom #因为后向填充(取No.1的值Tom作为填充值)
  46. #No.1 Tom
  47. #No.4 NaN
  48. #No.5 NaN
  49. #dtype: object

4.4drop()方法


   
   
  1. # -*- coding: utf-8 -*-
  2. """
  3. @author:蔚蓝的天空Tom
  4. Aim:实现Series常用函数的例程---drop()方法,丢弃指定项,不修改对源对象内容,返回新对象
  5. (6)丢弃指定项
  6. Series.drop(index)
  7. """
  8. import pandas as pd
  9. from pandas import Series
  10. if __name__== '__main__':
  11. #(6)丢弃指定项Series.drop(index)
  12. s = pd.Series([ 'Tom', 'Kim', 'Andy'], index=[ 'No.1', 'No.2', 'No.3'])
  13. #删除一个元素,由索引号指定
  14. ds = s.drop( 'No.1')
  15. #No.2 Kim
  16. #No.3 Andy
  17. #dtype: object
  18. data = { 'Name':{ 'No.1': 'Tom', 'No.2': 'Kim', 'No.3': 'Andy'},
  19. 'Age':{ 'No.1': 18, 'No.2': 16, 'No.3': 19}}
  20. df = pd.DataFrame(data)
  21. # Age Name
  22. #No.1 18 Tom
  23. #No.2 16 Kim
  24. #No.3 19 Andy
  25. #删除指定行
  26. ds = df.drop( 'No.1')
  27. # Age Name
  28. #No.2 16 Kim
  29. #No.3 19 Andy
  30. #删除指定列,可以产出多列,序列中指出就可以['Age','Name']
  31. ds = df.drop([ 'Age'], axis= 1)
  32. # Name
  33. #No.1 Tom
  34. #No.2 Kim
  35. #No.3 Andy

4.5series.map(func)元素函数向量化


   
   
  1. # -*- coding: utf-8 -*-
  2. """
  3. @author:蔚蓝的天空Tom
  4. Aim:实现Series常用函数的例程---应用元素级函数series.map(func),不修改源对象,返回新对象
  5. (7)应用元素级函数
  6. Series.map(f)
  7. """
  8. import math
  9. import pandas as pd
  10. from pandas import Series
  11. if __name__== '__main__':
  12. #(7)应用元素级函数Series.map(f)
  13. func = lambda x:x* 2
  14. s = pd.Series([ 1, 3, 5], index=[ 'No.1', 'No.2', 'No.3'])
  15. ms = s.map(func)
  16. #No.1 2
  17. #No.2 6
  18. #No.3 10
  19. #dtype: int64
  20. ms = s.map(np.exp)
  21. #No.1 2.718282
  22. #No.2 20.085537
  23. #No.3 148.413159
  24. #dtype: float64
  25. ms = s.map(math.exp)
  26. #No.1 2.718282
  27. #No.2 20.085537
  28. #No.3 148.413159
  29. #dtype: float64

4.6 series排序函数


   
   
  1. # -*- coding: utf-8 -*-
  2. """
  3. @author: 蔚蓝的天空Tom
  4. Aim:实现Series常用函数的例程---series对象排序方法
  5. Series.sort_index(ascending=True) 根据索引返回已排序的新对象
  6. Series.order(ascending=True) 根据值返回已排序的对象,NaN值在末尾
  7. Series.rank(method='average', ascending=True, axis=0) 为各组分配一个平均排名
  8. df.argmax()
  9. df.argmin()
  10. 返回含有最大值的索引位置
  11. 返回含有最小值的索引位置
  12.     reindex的method选项:
  13.       ffill, bfill     向前填充/向后填充
  14.       pad, backfill   向前搬运,向后搬运
  15.     rank的method选项
  16.       'average'    在相等分组中,为各个值分配平均排名
  17.       'max','min'   使用整个分组中的最小排名
  18.       'first'      按值在原始数据中出现的顺序排名
  19. """
  20. import pandas as pd
  21. from pandas import Series
  22. if __name__== '__main__':
  23. #索引升序排序,Series.sort_index(ascending=True) ,默认True
  24. s = pd.Series([ 6, 2, 8], index=[ 'No.1', 'No.2', 'No.3'])
  25. ss = s.sort_index(ascending= True)
  26. #No.1 6
  27. #No.2 2
  28. #No.3 8
  29. #dtype: int64
  30. #索引降序排序,Series.sort_index(ascending=Flase)
  31. ss = s.sort_index(ascending= False)
  32. #No.3 8
  33. #No.2 2
  34. #No.1 6
  35. #dtype: int64
  36. #数值升序排序 Series.sort_values(ascending=True) ,默认True
  37. s = pd.Series([ 6, 2, 8], index=[ 'No.1', 'No.2', 'No.3'])
  38. so = s.sort_values(ascending= True)
  39. #No.2 2
  40. #No.1 6
  41. #No.3 8
  42. #dtype: int64
  43. #数值降序排序 Series.sort_values(ascending=False)
  44. so = s.sort_values(ascending= False)
  45. #No.3 8
  46. #No.1 6
  47. #No.2 2
  48. #dtype: int64

4.7rank()排名方法


   
   
  1. # -*- coding: utf-8 -*-
  2. """
  3. @author: 蔚蓝的天空Tom
  4. Aim:实现Series的排名方法例程---series.rank()
  5. Aim:注意区分排名和排序的区别, 排名是按照排序(降序/升序)结果,用排名数值(1~n),替换数值,则每个数值对应一个排名
  6. #排名(Series.rank(method='average', ascending=True))的作用与排序的不同之处是:
  7. #他会把对象的 values 替换成名次(从 1 到 n),问题待解决问题:如何处理平级项,
  8. #method 参数有四个值可选:average, min, max, first来处理评级项问题。
  9. Note:此处排序采用升序排序,然后排名以升序排序的结果进行排名。对降序排序的排名道理都是一样的,此处不予展示了。
  10. """
  11. import pandas as pd
  12. from pandas import Series
  13. if __name__== '__main__':
  14. s = pd.Series([ 6, 9, 6, 2])
  15. s.index.name= 'ID'
  16. #ID
  17. #0 6
  18. #1 9
  19. #2 6
  20. #3 2
  21. #平均排名,rank()的method默认为average,如果存在评级项,则排名为名次/m,m为评级项元素个数
  22. sr = s.rank()
  23. #ID
  24. #0 2.5 #两个6,排名2和3,平均排名为2.5
  25. #1 4.0
  26. #2 2.5 #两个6,排名2和3,平均排名为2.5
  27. #3 1.0
  28. #平均排名,显示调用method=average
  29. sr = s.rank(method= 'average')
  30. #ID
  31. #0 2.5
  32. #1 4.0
  33. #2 2.5
  34. #3 1.0
  35. #dtype: float64
  36. #最小值排名
  37. sr = s.rank(method= 'min')
  38. #ID
  39. #0 2.0 #两个6,排名2和3,最小排名都为2
  40. #1 4.0
  41. #2 2.0 #两个6,排名2和3,最小排名都为2
  42. #3 1.0
  43. #dtype: float64
  44. #最大值排名
  45. sr = s.rank(method= 'max')
  46. #ID
  47. #0 3.0 #两个6,排名2和3,最大排名都为3
  48. #1 4.0
  49. #2 3.0 #两个6,排名2和3,最大排名都为3
  50. #3 1.0
  51. #dtype: float64
  52. #第一排名
  53. sr = s.rank(method= 'first')
  54. #ID
  55. #0 2.0 #两个6,排名2和3,first排名时第一个6排名取2
  56. #1 4.0
  57. #2 3.0 #两个6,排名2和3,first排名时第二个6排名取3
  58. #3 1.0
  59. #dtype: float64

4.8最大值/最小值的行索引方法argmin()、argmax()


   
   
  1. # -*- coding: utf-8 -*-
  2. """
  3. @author: 蔚蓝的天空Tom
  4. Aim:Series中最大(最小)数值的索引方法例程----argmax()、argmin()
  5. df.argmax() 返回含有最大值的索引位置
  6. df.argmin() 返回含有最小值的索引位置
  7. """
  8. import pandas as pd
  9. from pandas import Series
  10. if __name__== '__main__':
  11. s = pd.Series([ 6, 8, 9, 2], index=[ 'No.1', 'No.2', 'No.3', 'No.4'])
  12. #No.1 6
  13. #No.2 8
  14. #No.3 9
  15. #No.4 2
  16. #dtype: int64
  17. ind = s.argmax()
  18. #No.3
  19. ind = s.argmin()
  20. #No.4
  21. v = ss[ss.argmin()]
  22. #2
  23. v = ss.min()
  24. #2
  25. #排序对argmin()、argmax()结果没有影响
  26. ss = s.sort_values(ascending= False)
  27. #No.3 9
  28. #No.2 8
  29. #No.1 6
  30. #No.4 2
  31. #dtype: int64
  32. ind =ss.argmax()
  33. #No.3
  34. v = ss[ss.argmax()]
  35. #9
  36. v = ss.max()
  37. #9

(end)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值