汇总的函数

方法 说明
count 非NA的值数量
describe 针对Series和DataFrame列计算汇总统计
min、max 计算最小值和最大值
argmin、argmax 计算能够获取到最小值和最大值的索引位置
idxmin、indxmax 计算能够获取到最小值和最大值的索引值
quantile 计算四分位数
sum 值的总和
mean 值的平均数
median 值的算术中位数(第50百分位数)
mad 根据平均值计算平均绝对离差
var 样本值的方差
std 样本值的标准差
skew 样本值的偏度
kurt 样本值的峰度
cumsum 样本值的累计和
cummin、cummax 累计最大值和累计最小值
cumprod 累计积
diff 计算一阶差分(对时间序列很有用)
pct_change 计算百分数变化
  1. import numpy as np
  2. import pandas as pd
  3. from pandas import Series
  4. df = pd.DataFrame([[1.4, np.nan],[7.1,-4.5],[np.nan,np.nan],[0.75,-1.3]],
  5. index=['a','b','c','d'],
  6. columns = ['one','two']
  7. )
  8. one two
  9. a 1.40 NaN
  10. b 7.10 -4.5
  11. c NaN NaN
  12. d 0.75 -1.3
  13. # 求每一列和
  14. df.sum()
  15. one 9.25
  16. two -5.80
  17. dtype: float64
  18. # 求每一行和
  19. df.sum(axis=1)
  20. a 1.40
  21. b 2.60
  22. c 0.00
  23. d -0.55
  24. dtype: float64
选项 说明
axis 约简的轴,axis=1代表统计一行的值,默认统计一列的值。
skipna 排除缺失值,默认值为True
level 如果轴是层次化索引的,则根据level分组约简
  1. # 返回最大值最小值的索引
  2. df.idxmin()
  3. one d
  4. two b
  5. dtype: object
  6. # 累积列的和
  7. df.cumsum()
  8. ### 汇总分析
  9. df.describe()
  10. one two
  11. count 3.000000 2.000000
  12. mean 3.083333 -2.900000
  13. std 3.493685 2.262742
  14. min 0.750000 -4.500000
  15. 25% 1.075000 -3.700000
  16. 50% 1.400000 -2.900000
  17. 75% 4.250000 -2.100000
  18. max 7.100000 -1.300000
  19. # 对于非数值型数据,describe会产生另一种汇总统计
  20. obj = Series(['a','a','b','c']*4)
  21. obj.describe()
  22. count 16
  23. unique 3
  24. top a
  25. freq 8
  26. dtype: object

相关系数和协方差

  1. # 需要先pip install pandas_datareader
  2. import pandas_datareader.data as web
  3. # 远程获取股票的数据
  4. all_data={}
  5. for ticker in ['AAPL','IBM','MSFT']:
  6. all_data[ticker]=web.get_data_yahoo(ticker,'1/1/2000','1/1/2010')
  7. all_data
  8. {'AAPL': High Low Open Close Volume Adj Close
  9. Date
  10. 1999-12-31 3.674107 3.553571 3.604911 3.671875 40952800.0 2.467498
  11. 2000-01-03 4.017857 3.631696 3.745536 3.997768 133949200.0 2.686497
  12. 2000-01-04 3.950893 3.613839 3.866071 3.660714 128094400.0 2.459998
  13. 2000-01-05 3.948661 3.678571 3.705357 3.714286 194580400.0 2.495997
  14. 2000-01-06 3.821429 3.392857 3.790179 3.392857 191993200.0 2.279998
  15. 2000-01-07 3.607143 3.410714 3.446429 3.553571 115183600.0 2.387998
  16. 2000-01-10 3.651786 3.383929 3.642857 3.491071 126266000.0 2.345998
  17. 2000-01-11 3.549107 3.232143 3.426339 3.312500 110387200.0 2.225998
  18. 2000-01-12 3.410714 3.089286 3.392857 3.113839 244017200.0 2.092498
  19. 2000-01-13 3.526786 3.303571 3.374439 3.455357 258171200.0 2.321998
  20. 2000-01-14 3.651786 3.549107 3.571429 3.587054 97594000.0 2.410497
  21. 2000-01-18 3.785714 3.587054 3.607143 3.712054 114794400.0 2.494497
  22. 2000-01-19 3.883929 3.691964 3.772321 3.805804 149410800.0 2.557498
  23. 2000-01-20 4.339286 4.053571 4.125000 4.053571 457783200.0 2.723998
  24. 2000-01-21 4.080357 3.935268 4.080357 3.975446 123981200.0 2.671498
  25. 2000-01-24 4.026786 3.754464 3.872768 3.794643 110219200.0 2.549998
  26. 2000-01-25 4.040179 3.656250 3.750000 4.008929 124286400.0 2.693998
  27. 2000-01-26 4.078125 3.919643 3.928571 3.935268 91789600.0 2.644498
  28. 2000-01-27 4.035714 3.821429 3.886161 3.928571 85036000.0 2.639997
  29. 2000-01-28 3.959821 3.593750 3.863839 3.629464 105837200.0 2.438998
  30. 2000-01-31 3.709821 3.375000 3.607143 3.705357 175420000.0 2.489997
  31. 2000-02-01 3.750000 3.571429 3.714286 3.580357 79508800.0 2.405998
  32. 2000-02-02 3.647321 3.464286 3.598214 3.529018 116048800.0 2.371498
  33. 2000-02-03 3.723214 3.580357 3.582589 3.689732 118798400.0 2.479497
  34. 2000-02-04 3.928571 3.700893 3.712054 3.857143 106330000.0 2.591997
  35. 2000-02-07 4.080357 3.783482 3.857143 4.073661 110266800.0 2.737498
  36. 2000-02-08 4.147321 3.973214 4.071429 4.102679 102160800.0 2.756998
  37. 2000-02-09 4.183036 4.015625 4.075893 4.022321 74841200.0 2.702997
  38. 2000-02-10 4.066964 3.928571 4.031250 4.053571 75745600.0 2.723998
  39. 2000-02-11 4.075893 3.866071 4.058036 3.883929 53062800.0 2.609998
  40. ... ... ... ... ... ... ...
  41. 2009-11-18 29.571428 29.142857 29.505714 29.422857 93580200.0 19.772139
  42. 2009-11-19 29.230000 28.542856 29.230000 28.644285 135581600.0 19.248940
  43. 2009-11-20 28.627142 28.251429 28.450001 28.559999 101666600.0 19.192299
  44. 2009-11-23 29.428572 28.992857 29.000000 29.411428 118724200.0 19.764460
  45. 2009-11-24 29.411428 28.985714 29.332857 29.205715 79609600.0 19.626223
  46. 2009-11-25 29.378571 29.108572 29.342857 29.170000 71613500.0 19.602222
  47. 2009-11-27 28.994286 28.338572 28.459999 28.655714 73814300.0 19.256622
  48. 2009-11-30 28.811428 28.395714 28.730000 28.558571 106214500.0 19.191339
  49. 2009-12-01 28.967142 28.118572 28.891428 28.138571 116440800.0 18.909100
  50. 2009-12-02 28.774286 27.964285 28.422857 28.032858 178815000.0 18.838060
  51. 2009-12-03 28.425714 28.038572 28.202858 28.068571 112179900.0 18.862062
  52. 2009-12-04 28.554285 27.182858 28.528572 27.617144 206721200.0 18.558701
  53. 2009-12-07 27.681429 26.954287 27.617144 26.992857 178689700.0 18.139185
  54. 2009-12-08 27.478571 26.957144 27.051428 27.124287 172599700.0 18.227499
  55. 2009-12-09 28.308571 27.187143 27.325714 28.257143 171195500.0 18.988783
  56. 2009-12-10 28.528572 28.017143 28.500000 28.061428 122417400.0 18.857262
  57. 2009-12-11 28.285715 27.632856 28.254286 27.809999 107443700.0 18.688299
  58. 2009-12-14 28.204287 27.508572 27.910000 28.139999 123947600.0 18.910061
  59. 2009-12-15 28.215714 27.610001 27.975714 27.738571 104864900.0 18.640306
  60. 2009-12-16 28.071428 27.792856 27.871429 27.861429 88246200.0 18.722862
  61. 2009-12-17 27.857143 27.285715 27.751429 27.408571 97209700.0 18.418543
  62. 2009-12-18 27.928572 27.514286 27.595715 27.918571 152192600.0 18.761261
  63. 2009-12-21 28.535715 27.952858 28.007143 28.318571 152976600.0 19.030060
  64. 2009-12-22 28.692858 28.379999 28.491428 28.622858 87378900.0 19.234541
  65. 2009-12-23 28.911428 28.687143 28.742857 28.871429 86381400.0 19.401581
  66. 2009-12-24 29.907143 29.049999 29.078571 29.862858 125222300.0 20.067825
  67. 2009-12-28 30.564285 29.944286 30.245714 30.230000 161141400.0 20.314537
  68. 2009-12-29 30.388571 29.818571 30.375713 29.871429 111301400.0 20.073582
  69. 2009-12-30 30.285715 29.758572 29.832857 30.234285 103021100.0 20.317423
  70. 2009-12-31 30.478571 30.080000 30.447144 30.104286 88102700.0 20.230061
  71. [2516 rows x 6 columns],
  72. price = pd.DataFrame({tic:data['Adj Close'] for tic, data in all_data.items()})
  73. volume = pd.DataFrame({tic:data['Volume'] for tic, data in all_data.items()})
  74. # 计算价格的百分位数变化
  75. returns = price.pct_change()
  76. # 结尾取5个,取局部的
  77. returns.tail()
  78. AAPL IBM MSFT
  79. Date
  80. 2009-12-24 0.034340 0.004385 0.002587
  81. 2009-12-28 0.012294 0.013326 0.005484
  82. 2009-12-29 -0.011861 -0.003477 0.007058
  83. 2009-12-30 0.012147 0.005461 -0.013698
  84. 2009-12-31 -0.004300 -0.012597 -0.015504

Series的corr方法用于计算两个Serires重叠的、非NA的、按索引对齐的值的相关系数。COV用于计算协方差。

  1. # 计算MSFT和IBM的相关系数
  2. returns.MSFT.corr(returns.IBM)
  3. 0.49253706924390156
  4. # 计算MSFT和IBM的协方差
  5. returns.MSFT.cov(returns.IBM)
  6. 0.00021557776646297303
  7. DataFramecorrcov方法,可以统计出任意两者之间的相关系数和协方差
  8. returns.corr()
  9. AAPL IBM MSFT
  10. AAPL 1.000000 0.412392 0.422852
  11. IBM 0.412392 1.000000 0.492537
  12. MSFT 0.422852 0.492537 1.000000
  13. # 返回单列的IBM与另外三者之间的相关系数
  14. returns.corrwith(returns.IBM)
  15. AAPL 0.412392
  16. IBM 1.000000
  17. MSFT 0.492537
  18. dtype: float64
  19. # 百分比变化和成交量的相关系数
  20. returns.corrwith(volume)
  21. AAPL -0.057665
  22. IBM -0.006592
  23. MSFT -0.016101
  24. dtype: float64
  25. returns.cov()
  26. AAPL IBM MSFT
  27. AAPL 0.001030 0.000254 0.000309
  28. IBM 0.000254 0.000369 0.000216
  29. MSFT 0.000309 0.000216 0.000519

唯一值(unique),返回一个Series,其索引为唯一值,其值为频率

  1. obj = Series(['c','a','d','a','a','b','b','c','c'])
  2. uniques = obj.unique()
  3. uniques
  4. array(['c', 'a', 'd', 'b'], dtype=object)
  5. # 对返回的结果可以进行排序
  6. uniques.sort()
  7. uniques
  8. array(['a', 'b', 'c', 'd'], dtype=object)
  9. # 统计值出现的次数,为了方便查看按值频率降序排序
  10. obj.value_counts()
  11. a 3
  12. c 3
  13. b 2
  14. d 1
  15. dtype: int64
  16. # pandas中需要将一维数组传入进去
  17. pd.value_counts(obj.values)
  18. a 3
  19. c 3
  20. b 2
  21. d 1
  22. dtype: int64

成员资格isin 计算一个表示"是否在数组中"布尔型数组

  1. mask = obj.isin(['b','c'])
  2. # 第一步先选出是否在,返回bool
  3. mask
  4. 0 True
  5. 1 False
  6. 2 False
  7. 3 False
  8. 4 False
  9. 5 True
  10. 6 True
  11. 7 True
  12. 8 True
  13. dtype: bool
  14. # 选择真值
  15. obj[mask]
  16. 0 c
  17. 5 b
  18. 6 b
  19. 7 c
  20. 8 c
  21. dtype: object
  22. data = pd.DataFrame({'Qu1':[100,300,400,300,400],
  23. 'Qu2':[200,300,100,200,300],
  24. 'Qu3':[100,500,200,400,400]
  25. })
  26. data
  27. Qu1 Qu2 Qu3
  28. 0 100 200 100
  29. 1 300 300 500
  30. 2 400 100 200
  31. 3 300 200 400
  32. 4 400 300 400
  33. p=data.apply(pd.value_counts).fillna(0)
  34. p
  35. Qu1 Qu2 Qu3
  36. 100 1.0 1.0 1.0
  37. 200 0.0 2.0 1.0
  38. 300 2.0 2.0 0.0
  39. 400 2.0 0.0 2.0
  40. 500 0.0 0.0 1.0

处理缺失数据

NA处理方法

方法 说明
dropna 根据各标签的值中是否存在缺失数据对轴标签进行过滤,可通过阈值调节对缺失值的容忍度
fillna 用指定值或插值方法填充缺失数据
isnull 返回一个含有布尔值的对象,这些布尔值表示哪些值是缺失值
notnull isnull的否定式

过滤掉

  1. from numpy import nan as NA
  2. data = pd.DataFrame([[1,6.5,3],[1,NA,NA],[NA,NA,NA],[NA,6.5,3]])
  3. data
  4. 0 1 2
  5. 0 1.0 6.5 3.0
  6. 1 1.0 NaN NaN
  7. 2 NaN NaN NaN
  8. 3 NaN 6.5 3.0
  9. # 默认会把所有的有NA的行删除
  10. data.dropna()
  11. 0 1 2
  12. 0 1.0 6.5 3.0
  13. # 传入how='all'将只丢弃全为NA的行
  14. data.dropna(how='all')
  15. 0 1 2
  16. 0 1.0 6.5 3.0
  17. 1 1.0 NaN NaN
  18. 3 NaN 6.5 3.0
  19. data[4]=NA
  20. data
  21. 0 1 2 4
  22. 0 1.0 6.5 3.0 NaN
  23. 1 1.0 NaN NaN NaN
  24. 2 NaN NaN NaN NaN
  25. 3 NaN 6.5 3.0 NaN
  26. # axis=1 删除全部为NA的列
  27. data.dropna(axis=1,how='all')
  28. 0 1 2
  29. 0 1.0 6.5 3.0
  30. 1 1.0 NaN NaN
  31. 2 NaN NaN NaN
  32. 3 NaN 6.5 3.0
  33. df = pd.DataFrame(np.random.randn(7,5))
  34. df.ix[:4,1] = NA
  35. df.ix[:2,2] = NA
  36. 0 1 2 3 4
  37. 0 0.758567 NaN NaN -0.064858 -0.385678
  38. 1 -0.275586 NaN NaN -0.184934 -0.253343
  39. 2 -1.872585 NaN NaN -1.539924 0.794054
  40. 3 1.092201 NaN 0.250026 -0.654255 -0.016992
  41. 4 0.625871 NaN -1.418505 1.141008 3.188408
  42. 5 -0.714581 0.423811 -0.799328 -1.010573 -0.959299
  43. 6 0.887836 1.412723 -0.405043 -0.417018 -1.114318
  44. #这里的thresh函数是选取最少non-NA值个数的行选出来
  45. df.dropna(thresh=5)
  46. 0 1 2 3 4
  47. 5 -0.714581 0.423811 -0.799328 -1.010573 -0.959299
  48. 6 0.887836 1.412723 -0.405043 -0.417018 -1.114318
  49. #### 填充缺失数据,如果不想过滤的话
  50. df.fillna(0)
  51. # 字典调用fillna,对不同的列填充不同的值
  52. df.fillna({1:'第一列',2:'第二列'})
  53. 0 1 2 3 4
  54. 0 0.758567 第一列 第二列 -0.064858 -0.385678
  55. 1 -0.275586 第一列 第二列 -0.184934 -0.253343
  56. 2 -1.872585 第一列 第二列 -1.539924 0.794054
  57. 3 1.092201 第一列 0.250026 -0.654255 -0.016992
  58. 4 0.625871 第一列 -1.41851 1.141008 3.188408
  59. 5 -0.714581 0.423811 -0.799328 -1.010573 -0.959299
  60. 6 0.887836 1.41272 -0.405043 -0.417018 -1.114318
  61. # 上面的都是返回值为新的对象,如果直接向对原数据修改,inplace = True
  62. df.fillna({1:'第一列',2:'第二列'},inplace=True)
  63. # 向上,向下填充(bfill,ffill)
  64. df = pd.DataFrame(np.random.randn(6,3))
  65. 0 1 2
  66. 0 2.040458 -2.276695 -1.038916
  67. 1 0.427078 NaN 0.001678
  68. 2 1.798042 NaN -0.839205
  69. 3 -0.433214 -0.312427 NaN
  70. 4 0.041802 1.356883 NaN
  71. 5 -0.904390 -1.030643 1.507598
  72. df.fillna(method='ffill',limit=1)
  73. 0 1 2
  74. 0 2.040458 -2.276695 -1.038916
  75. 1 0.427078 -2.276695 0.001678
  76. 2 1.798042 NaN -0.839205
  77. 3 -0.433214 -0.312427 -0.839205
  78. 4 0.041802 1.356883 NaN
  79. 5 -0.904390 -1.030643 1.507598
  80. #还可以传入Series的平均值或中位数
  81. data = Series([1,NA,3.5])
  82. data.fillna(data.mean())
  83. 0 1.00
  84. 1 2.25
  85. 2 3.50
  86. dtype: float64

Pandas汇总和处理缺失数据的更多相关文章

  1. pandas知识点(处理缺失数据)

    pandas使用浮点值NaN表示浮点和非浮点数组中的缺失数据: In [14]: string_data = Series(['aardvark','artichoke',np.nan,'avocad ...

  2. pandas(五)处理缺失数据和层次化索引

    pandas用浮点值Nan表示浮点和非浮点数组中的缺失数据.它只是一个便于被检测的标记而已. >>> string_data = Series(['aardvark','artich ...

  3. 利用Python进行数据分析(10) pandas基础: 处理缺失数据

      数据不完整在数据分析的过程中很常见. pandas使用浮点值NaN表示浮点和非浮点数组里的缺失数据. pandas使用isnull()和notnull()函数来判断缺失情况. 对于缺失数据一般处理 ...

  4. Pandas之Dropna滤除缺失数据

    import pandas as pd import numpy as np from numpy import nan as NaN 一.处理Series对象 通过dropna()滤除缺失数据 fr ...

  5. pandas汇总和计算描述统计

    pandas 对象拥有一组常用的数学和统计方法. 他们大部分都属于简约和汇总统计, 用于从Series中提取单个值(如sum或mean) 或从DataFrame的行或列中提取一个Series.跟对应的 ...

  6. Pandas学习(一)——数据的导入

    欢迎加入python学习交流群 667279387 学习笔记汇总 Pandas学习(一)–数据的导入 pandas学习(二)–双色球数据分析 pandas学习(三)–NAB球员薪资分析 pandas学 ...

  7. 利用Python进行数据分析_Pandas_处理缺失数据

    申明:本系列文章是自己在学习<利用Python进行数据分析>这本书的过程中,为了方便后期自己巩固知识而整理. 1 读取excel数据 import pandas as pd import ...

  8. R语言︱处理缺失数据&&异常值检验、离群点分析、异常值处理

    在数据挖掘的过程中,数据预处理占到了整个过程的60% 脏数据:指一般不符合要求,以及不能直接进行相应分析的数据 脏数据包括:缺失值.异常值.不一致的值.重复数据及含有特殊符号(如#.¥.*)的数据 数 ...

  9. 在excel中将缺失数据全部用0补齐

    先ctrl+H ,出现如下对话框 点击“定位”,选择“空值” 在表格中空的位置上编辑栏输入0,CTRL+ENTER,即可将缺失数据全部用0补齐.

随机推荐

  1. pc

  2. 【转】不联网如何PING通WIN主机和VMWARE

    原文地址:http://www.gqgtpc.com/thread-76838-1-1.html 一般情况下,如果宿主主机的网口连接网线并且能够上网,那么按照VM的默认安装,在VM-Settings- ...

  3. 《GPU高性能编程CUDA实战》第四章 简单的线程块并行

    ▶ 本章介绍了线程块并行,并给出两个例子:长向量加法和绘制julia集. ● 长向量加法,中规中矩的GPU加法,包含申请内存和显存,赋值,显存传入,计算,显存传出,处理结果,清理内存和显存.用到了 t ...

  4. [多线程]多线程(Thread、Runnable、Callable)

    1.继承Thread类,重写run方法 线程 是程序中的执行线程.Java 虚拟机允许应用程序并发地运行多个执行线程. 每个线程都有一个优先级,高优先级线程的执行优先于低优先级线程.每个线程都可以或不 ...

  5. layui动态options

    layui 坑 layui 针对各种表单元素做了较为全面的UI支持,你无需去书写那些 UI 结构,你只需要写 HTML 原始的 input.select.textarea 这些基本的标签即可.我们在 ...

  6. java环境变量配置方法

    原创文章,转载请注明出处. 这是本人2011-9-4记录的,现在把它放在博客上. windows xp下配置JDK环境变量: 1.安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为 ...

  7. 机器学习进阶-案例实战-答题卡识别判 1.cv2.getPerspectiveTransform(获得投射变化后的H矩阵) 2.cv2.warpPerspective(H获得变化后的图像) 3.cv2.approxPolyDP(近似轮廓) 4.cv2.threshold(二值变化) 7.cv2.countNonezeros(非零像素点个数)6.cv2.bitwise_and(与判断)

    1.H = cv2.getPerspectiveTransform(rect, transform_axes) 获得投射变化后的H矩阵 参数说明:rect表示原始的位置左上,右上,右下,左下, tra ...

  8. Java工具类DateFormatUtils详解

    日期和时间格式化实用程序和常量public static String format(Calendar calendar, String pattern) 说明:将日历格式化为特定的模式:参数:cal ...

  9. Lazarus下改变DBGrid记录的颜色,与Delphi不同了。

    功能:根据一条记录满足特定条件,使用不同的颜色进行显示. 来源:http://www.aliyagoo.com/blog 主要事件是在PrepareCanvas 不是DrawColumnCell 而且 ...

  10. CSS: Position Introduction.

    brief introduction: detailed introduction: ①absolute locate:http://www.runoob.com/try/try.php?filena ...