前言
本文其实属于:Python的进阶之道【AIoT阶段一】的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 pandas 入门,后续还会单独发一篇 pandas 高级以及 pandas 进阶内容供读者学习。
- Python在数据处理和准备方面一直做得很好,但在数据分析和建模方面就差一些。pandas帮助填补了这一空白,使您能够在Python中执行整个数据分析工作流程,而不必切换到更特定于领域的语言,如R。
- 与出色的 jupyter工具包和其他库相结合,Python中用于进行数据分析的环境在性能、生产率和协作能力方面都是卓越的。
- pandas是 Python 的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。pandas是Python进行数据分析的必备高级工具。
- pandas的主要数据结构是 Series(一维数据)与 DataFrame(二维数据),这两种数据结构足以处理金融、统计、社会科学、工程等领域里的大多数案例
- 处理数据一般分为几个阶段:数据整理与清洗、数据分析与建模、数据可视化与制表,Pandas 是处理数据的理想工具。
🌟 学习本文之前,需要先自修:NumPy从入门到进阶,本文中很多的操作在 NumPy从入门到进阶 一文中有详细的介绍,包含一些软件以及扩展库,图片的安装和下载流程,本文会直接进行使用。
1.pandas的安装
🚩Windows + R,输入 cmd,输入 pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple 下载 pandas,如果你曾跟着NumPy从入门到进阶进行学习,这一步可以省略【已经安装好了 pandas】
安装好后,进入 jupyter,运行如下代码,没有报错证明安装成功:
2.数据结构
2.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)
2.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)