二、Pandas
1.pandas入门
- Python在数据处理和准备方面一直做得很好,但在数据分析和建模方面就差一些。pandas帮助填补了这一空白,使您能够在Python中执行整个数据分析工作流程,而不必切换到更特定于领域的语言,如R。
- 与出色的 jupyter工具包和其他库相结合,Python中用于进行数据分析的环境在性能、生产率和协作能力方面都是卓越的。
- pandas是 Python 的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。pandas是Python进行数据分析的必备高级工具。
- pandas的主要数据结构是 Series(一维数据)与 DataFrame(二维数据),这两种数据结构足以处理金融、统计、社会科学、工程等领域里的大多数案例
- 处理数据一般分为几个阶段:数据整理与清洗、数据分析与建模、数据可视化与制表,Pandas 是处理数据的理想工具。
1.1 数据结构
1.1.1 一维结构(Series)
import pandas as pd s = pd.Series(data = [9, 8, 7, 6], index = ['a', 'b', 'c', 'd']) display(s)
可以看到,我们创建了索引(index)为 'a' 'b' 'c' 'd'
,data 为9 8 7 6
的一维结构,我们还可以不指定索引(index),那么就会默认为 0 1 2 ...
一维Series和之前NumPy有何不同呢?
区别在于索引,是一一对应的,即索引也可以拥有自己的“名字”,而NumPy则是:自然索引(0 ~ n)
1.1.2 二维结构(DataFrame)
import pandas as pd import numpy as np pd.DataFrame(data = np.random.randint(0, 150, size = (5, 3)))
默认的行索引和列索引也都是从0开始的,我们说过,pandas可以自己定义我们的索引:
import pandas as pd import numpy as np # columns 用来设置列索引,index 用来设置行索引 pd.DataFrame(data = np.random.randint(0, 150, size = (5, 3)), columns = ['Python', 'English', 'Math'], index = list('ABCDE'))
我们发现,表格中的数都是正数,我们可以用 dtype 属性设置为小数或者其他:
import pandas as pd import numpy as np # dtype 用来设置数的类型 pd.DataFrame(data = np.random.randint(0, 150, size = (5, 3)), columns = ['Python', 'English', 'Math'], index = list('ABCDE'), dtype = np.float32)
下面介绍另一种创建的方法:我们学过 Python 后,你可能会发现,在 Python 中的字典这种数据类型好像和这个特别像,故我们可以使用字典去进行创建:
import pandas as pd import numpy as np pd.DataFrame(data = {'Python':np.random.randint(100, 150, size = 5), 'English':np.random.randint(90, 130, size = 5), 'Math':np.random.randint(100, 150, size = 5)})
我们设置了列索引,接下来我们来设置行索引:
import pandas as pd import numpy as np pd.DataFrame(data = {'Python':np.random.randint(100, 150, size = 5), 'English':np.random.randint(90, 130, size = 5), 'Math':np.random.randint(100, 150, size = 5)}, index = list('ABCDE'))
我们当然可以对其进行排序,比如我们按照行索引的大小进行降序:
import pandas as pd import numpy as np df = pd.DataFrame(data = {'Python':np.random.randint(100, 150, size = 5), 'English':np.random.randint(90, 130, size = 5), 'Math':np.random.randint(100, 150, size = 5)}, index = list('ABCDE')) df.sort_index(ascending = False)
1.2 数据查看
🚩接下来来介绍一些查看数据的方法:
import numpy as np import pandas as pd # 创建 shape(150, 3)的二维标签数组结构DataFrame df = pd.DataFrame(data = np.random.randint(0, 151, size = (150, 3)), columns = ['Python', 'English', 'Math']) # 查看其属性、概览和统计信息 display(df.head(10)) # 显示头部10个,默认5个 display(df.tail(10)) # 查看末尾10个,默认5个 display(df.shape) # 查看形状,行数和列数 display(df.dtypes) # 查看数据类型 # 改变数据类型: # 把 'Python' 一列的数据类型由 int32 改为 int64 df['Python'] = df['Python'].astype(np.int64) display(df.dtypes) # 查看数据类型 display(df.index) # 查看行索引 display(df.columns) # 查看列索引
import numpy as np import pandas as pd df = pd.DataFrame(data = np.random.randint(0, 151, size = (150, 3)), columns = ['Python', 'English', 'Math']) display(df.values) # 查看对象值(即这个二维ndarray数组)
import numpy as np import pandas as pd df = pd.DataFrame(data = np.random.randint(0, 151, size = (150, 3)), columns = ['Python', 'English', 'Math']) # 查看数值类型列的汇总统计,计数、平均值、标准差、最小值、四分位数、最大值 display(df.describe()) # 查看列索引、数据类型、非空计数和内存信息 display(df.info())