Python数据分析,必须要求掌握Pandas大熊猫

大数据 数据分析 后端
pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

我写的pandas不是我国可爱的大熊猫国宝

 

[[322948]]

pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

 

Python数据分析,必须要求掌握pandas大熊猫

1.pandas数据结构的介绍

  • Series:一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近。Series如今能保存不同种数据类型,字符串、boolean值、数字等都能保存在Series中。
  • Time- Series:以时间为索引的Series。
  • DataFrame:二维的表格型数据结构。很多功能与R中的data.frame类似。可以将DataFrame理解为Series的容器。
  • Panel :三维的数组,可以理解为DataFrame的容器。

2.Series的操作

2.1 对象创建 2.1.1 直接创建2.1.2 字典创建

  1. import pandas as pd 
  2. import numpy as np 
  3. # 直接创建 
  4. s = pd.Series(np.random.randn(5), index=['a','b','c','d','e']) 
  5. print(s)  
  6. # 字典(dict)类型数据创建 
  7. s = pd.Series( {'a':10, 'b':20, 'c':30}, index=['b''c''a''d']) 
  8.  
  9. OUT
  10. a   -0.620323 
  11. b   -0.189133 
  12. c    1.677690 
  13. d   -1.480348 
  14. e   -0.539061 
  15. dtype: float64 
  16.  
  17. OUT
  18. a    10 
  19. b    20 
  20. c    30 
  21. dtype: int64 

2.2 查看数据 切片、索引、dict操作 Series既然是一维数组类型的数据结构,那么它支持想数组那样去操作它。通过数组下标索引、切片都可以去操作他,且它的data可以是dict类型的,那么它肯定也就支持字典的索引方式。

  1. import pandas as pd 
  2. import numpy as np 
  3.  
  4. s = pd.Series(np.random.randn(5), index=['a','b','c','d','e']) 
  5.  
  6. print(s) 
  7.  
  8. # 下标索引 
  9. print('下标索引方式s[0] = : %s' % s[0]) 
  10.  
  11. # 字典访问方式 
  12. print('字典访问方式s[b] = :%s' % s['b']) 
  13.  
  14. # 切片操作 
  15. print('切片操作s[2:]\n:%s' % s[2:]) 
  16. print('a' in s) 
  17. print('k' in s) 
  18. OUT
  19. a   -0.799676 
  20. b   -1.581704 
  21. c   -1.240885 
  22. d    0.623757 
  23. e   -0.234417 
  24. dtype: float64 
  25.  
  26. 下标索引方式s[0] = : -0.799676067487 
  27. 字典访问方式s[b] = :-1.58170351838 
  28. 切片操作s[2:]: 
  29. c   -1.240885 
  30. d    0.623757 
  31. e   -0.234417 
  32. True 
  33. False 

2.3 Series的算术操作

  1. import pandas as pd 
  2. import numpy as np 
  3.  
  4. s1 = pd.Series(np.random.randn(3), index=['a','b','c']) 
  5.  
  6. s2 = pd.Series(np.random.randn(3), index=['a','b','c']) 
  7. print(s1+s2) 
  8. print(s1-s2) 
  9. print(s1*s2) 
  10. print(s1/s2) 
  11. OUT
  12. a    0.236514 
  13. b   -0.132153 
  14. c    0.203186 
  15. dtype: float64 
  16.  
  17. a    0.305397 
  18. b   -1.474441 
  19. c   -1.697982 
  20. dtype: float64 
  21.  
  22. a   -0.009332 
  23. b   -0.539128 
  24. c   -0.710465 
  25. dtype: float64 
  26.  
  27. a   -7.867120 
  28. b   -1.196907 
  29. c   -0.786252 
  30. dtype: float64 

3.dataframe的操作

3.1 对象创建

  1. In [70]:  data = {'state': ['Ohio''Ohio''Ohio''Nevada''Nevada'],'year': [2000, 2001, 20 
  2.     ...: 02, 2001, 2002],'pop': [1.5, 1.7, 3.6, 2.4, 2.9]} 
  3. In [71]: data 
  4. Out[71]:  
  5. {'pop': [1.5, 1.7, 3.6, 2.4, 2.9], 
  6.  'state': ['Ohio''Ohio''Ohio''Nevada''Nevada'], 
  7.  'year': [2000, 2001, 2002, 2001, 2002]} 
  8. # 建立DataFrame对象 
  9. In [72]: frame1 = DataFrame(data) 
  10. # 红色部分为自动生成的索引 
  11. In [73]: frame1 
  12. Out[73]:  
  13.    pop   state  year 
  14. 0  1.5    Ohio  2000 
  15. 1  1.7    Ohio  2001 
  16. 2  3.6    Ohio  2002 
  17. 3  2.4  Nevada  2001 
  18. 4  2.9  Nevada  2002 
  19.  
  20. >>> lista = [1,2,5,7] 
  21. >>> listb = ['a','b','c','d'
  22. >>> df = pd.DataFrame({'col1':lista,'col2':listb}) 
  23. >>> df 
  24.    col1 col2 
  25. 0     1    a 
  26. 1     2    b 
  27. 2     5    c 
  28. 3     7    d 

3.2 选择数据

  1. In [1]: import numpy as np 
  2.    ...: import pandas as 
  3.    ...: df = pd.DataFrame 
  4.  
  5. In [2]: df 
  6. Out[2]: 
  7.     a   b   c 
  8. 0   0   2   4 
  9. 1   6   8  10 
  10. 2  12  14  16 
  11. 3  18  20  22 
  12. 4  24  26  28 
  13. 5  30  32  34 
  14. 6  36  38  40 
  15. 7  42  44  46 
  16. 8  48  50  52 
  17. 9  54  56  58 
  18.  
  19. In [3]: df.loc[0,'c'
  20. Out[3]: 4 
  21.  
  22. In [4]: df.loc[1:4,['a','c']] 
  23. Out[4]: 
  24.     a   c 
  25. 1   6  10 
  26. 2  12  16 
  27. 3  18  22 
  28. 4  24  28 
  29. In [5]: df.iloc[0,2] 
  30. Out[5]: 4 
  31.  
  32. In [6]: df.iloc[1:4,[0,2]] 
  33. Out[6]: 
  34.     a   c 
  35. 1   6  10 
  36. 2  12  16 
  37. 3  18  22 

3.3 函数应用

  1. frame = pd.DataFrame(np.random.randn(4, 3), columns=list('bde'), 
  2.                      index=['Utah''Ohio''Texas''Oregon']) 
  3. frame 
  4. np.abs(frame) 
  5.  
  6. OUT: 
  7.             b      d            e 
  8. Utah 0.204708 0.478943 0.519439 
  9. Ohio 0.555730 1.965781 1.393406 
  10. Texas 0.092908 0.281746 0.769023 
  11. Oregon 1.246435 1.007189 1.296221 
  12.  
  13.  
  14. f = lambda x: x.max() - x.min() 
  15. frame.apply(f) 
  16. OUT: 
  17. b    1.802165 
  18. d    1.684034 
  19. e    2.689627 
  20. dtype: float64 
  21.  
  22. def f(x): 
  23.     return pd.Series([x.min(), x.max()], index=['min''max']) 
  24. frame.apply(f) 
  25.  
  26.             b d       e 
  27. Utah -0.20 0.48 -0.52 
  28. Ohio -0.56 1.97 1.39 
  29. Texas 0.09 0.28 0.77 
  30. Oregon 1.25 1.01 -1.30 

3.4 统计概述和计算

  1. df = pd.DataFrame([[1.4, np.nan], [7.1, -4.5], 
  2.                    [np.nan, np.nan], [0.75, -1.3]], 
  3.                   index=['a''b''c''d'], 
  4.                   columns=['one''two']) 
  5. df 
  6. OUT
  7.     one     two 
  8. a 1.40 NaN 
  9. b 7.10 -4.5 
  10. c NaN     NaN 
  11. d 0.75 -1.3 
  12.  
  13.  
  14. df.info() 
  15. df.describe() 
  16.  
  17.  
  18. <class 'pandas.core.frame.DataFrame'
  19. Index: 4 entries, a to d 
  20. Data columns (total 2 columns): 
  21. one    3 non-null float64 
  22. two    2 non-null float64 
  23. dtypes: float64(2) 
  24. memory usage: 256.0+ bytes 
  25.  
  26. OUT: 
  27.           one          two 
  28. count 3.000000 2.000000 
  29. mean 3.083333 -2.900000 
  30. std 3.493685 2.262742 
  31. min 0.750000 -4.500000 
  32. 25% 1.075000 -3.700000 
  33. 50% 1.400000 -2.900000 
  34. 75% 4.250000 -2.100000 
  35. max 7.100000 -1.300000 

3.5 数据读取

  1. data = pd.read_csv('./dataset/HR.csv'
  2. data.info() 
  3.  
  4. out: 
  5. <class 'pandas.core.frame.DataFrame'
  6. RangeIndex: 14999 entries, 0 to 14998 
  7. Data columns (total 10 columns): 
  8. satisfaction_level       14999 non-null float64 
  9. last_evaluation          14999 non-null float64 
  10. number_project           14999 non-null int64 
  11. average_montly_hours     14999 non-null int64 
  12. time_spend_company       14999 non-null int64 
  13. Work_accident            14999 non-null int64 
  14. left                     14999 non-null int64 
  15. promotion_last_5years    14999 non-null int64 
  16. sales                    14999 non-null object 
  17. salary                   14999 non-null object 
  18. dtypes: float64(2), int64(6), object(2) 
  19. memory usage: 1.1+ MB 
  20.  
  21. data = pd.read_csv('./dataset/movielens/movies.dat', header=None, names=['name''types'], sep='::', engine='python'
  22. data.head() 
  23. OUT: 
  24.                 name types 
  25. 1 Toy Story (1995) Animation|Children's|Comedy 
  26. 2 Jumanji (1995) Adventure|Children's|Fantasy 
  27. 3 Grumpier Old Men (1995) Comedy|Romance 
  28. 4 Waiting to Exhale (1995) Comedy|Drama 
  29. 5 Father of the Bride Part II (1995) Comedy 
  30.  
  31.  
  32. data = pd.read_excel('./dataset/my_excel.xlsx', sheet_name=1) 
  33. data.head() 
  34. ouput: 
  35.         date H1 H2 H3 
  36. 0 2014-06-01 1 2 3 
  37. 1 2014-06-02 2 3 4 
  38. 2 2014-06-03 3 4 5 
  39. 3 2014-06-04 4 5 6 

#4. Time- Series的操作

生成日期范围:

  1. import pandas as pd 
  2. pd.data_range('20190313',periods=10) 
  3.  
  4. OUT
  5. DatetimeIndex(['2019-03-13''2019-03-14''2019-03-15''2019-03-16'
  6.                '2019-03-17''2019-03-18''2019-03-19''2019-03-20'
  7.                '2019-03-21''2019-03-22'], 
  8.               dtype='datetime64[ns]', freq='D'

5. 绘图功能

  1. ts = pd.DataFrame(np.random.randn(1000,4),index=pd.date_range('20180101',periods=1000),columns=list('abcd')) 
  2. ts = ts.cumsum() 
  3. ts.plot(figsize = (12,8)) 
  4. plt.show() 

 

Python数据分析,必须要求掌握pandas大熊猫

 

 

责任编辑:未丽燕 来源: 今日头条
相关推荐

2022-02-07 10:05:00

机器人熊猫

2015-05-12 15:43:32

2022-02-03 15:07:10

人工智能机器人相声

2020-04-16 14:10:49

人脸识别大熊猫人工智能

2020-11-29 16:52:13

数据库SQL数据分析

2021-03-18 22:06:01

数据分析编程语言大数据

2021-12-03 18:04:06

命令 RabbitMQ Web

2021-04-07 14:43:41

数据分析大数据工具

2019-08-07 15:20:08

Git开源命令

2018-06-12 15:55:07

编程语言Java加密方式

2021-03-16 11:45:15

大数据数据分析数据经典模型

2019-06-20 17:39:12

Android启动优化

2020-06-05 14:29:07

PythonPandas数据分析

2017-09-01 09:52:20

PythonPandas数据分析

2020-07-07 14:35:41

Python数据分析命令

2024-01-09 13:58:22

PandasPython数据分析

2021-10-21 08:13:11

Springboot

2022-07-24 09:56:40

大数据技术

2015-05-07 15:13:22

JS实现JQueryJQuery

2019-12-27 15:05:11

LinuxWindowsDNS
点赞
收藏

51CTO技术栈公众号