原始文章
pandas是基于NumPy的一种数据分析工具,在机器学习任务中,我们首先需要对数据进行清洗和编辑等工作,pandas库大大简化了我们的工作量,熟练并掌握pandas常规用法是正确构建机器学习模型的第一步。
目录
- 如何安装pandas
- 如何导入pandas库和查询相应的版本信息
- pandas数据类型
- series教程
- dataframe教程
- 小结
1. 如何安装Pandas
最常用的方法是通过Anaconda安装,在终端或命令符输入如下命令安装:
conda install pandas
若未安装Anaconda,使用Python自带的包管理工具pip来安装:
pip install pandas
2. 如何导入pandas库和查询相应的版本信息
import numpy as np # pandas和numpy常常结合在一起使用,导入numpy库 import pandas as pd # 导入pandas库 print(pd.__version__) # 打印pandas版本信息 #> 0.23.4
3. pandas数据类型
pandas包含两种数据类型:series和dataframe。
series是一种一维数据结构,每一个元素都带有一个索引,与一维数组的含义相似,其中索引可以为数字或字符串。series结构名称:
|索引列|数据列
dataframe是一种二维数据结构,数据以表格形式(与excel类似)存储,有对应的行和列。dataframe结构名称:
4. series教程
- 如何从列表,数组,字典构建series
mylist = list('abcedfghijklmnopqrstuvwxyz') # 列表 myarr = np.arange(26) # 数组 mydict = dict(zip(mylist, myarr)) # 字典 # 构建方法 ser1 = pd.Series(mylist) ser2 = pd.Series(myarr) ser3 = pd.Series(mydict) print(ser3.head()) # 打印前5个数据 #> a 0 b 1 c 2 d 4 e 3 dtype:int64
- 如何使series的索引列转化为dataframe的列
mylist = list('abcedfghijklmnopqrstuvwxyz') myarr = np.arange(26) mydict = dict(zip(mylist, myarr)) ser = pd.Series(mydict) # series转换为dataframe df = ser.to_frame() # 索引列转换为dataframe的列 df.reset_index(inplace=True) print(df.head()) #> index 0 0 a 0 1 b 1 2 c 2 3 e 3 4 d 4
- 如何结合多个series组成dataframe
# 构建series1 ser1 = pd.Series(list('abcedfghijklmnopqrstuvwxyz')) # 构建series2 ser2 = pd.Series(np.arange(26)) # 方法1,axis=1表示列拼接,0表示行拼接 df = pd.concat([ser1, ser2], axis=1) # 与方法1相比,方法2设置了列名 df = pd.DataFrame({'col1': ser1, 'col2': ser2}) print(df.head()) #> col1 col2 0 a 0 1 b 1 2 c 2 3 e 3 4 d 4
-
如何命名列索引的名称
ser = pd.Series(list('abcedfghijklmnopqrstuvwxyz')) # 命名索引列名称 ser.name = 'alphabets' # 显示前5行数据 ser.head() #> 0 a 1 b 2 c 3 e 4 d Name: alphabets, dtype: object
- 如何获得series对象A中不包含series对象B的元素
ser1 = pd.Series([1, 2, 3, 4, 5]) ser2 = pd.Series([4, 5, 6, 7, 8]) # 返回ser1不包含ser2的布尔型series ser3=~ser1.isin(ser2) # 获取ser不包含ser2的元素 ser1[ser3] #> 0 1 1 2 2 3 dtype: int64
- 如何获得seriesA和seriesB不相同的项
ser1 = pd.Series([1, 2, 3, 4, 5]) ser2 = pd.Series([4, 5, 6, 7, 8]) # 求ser1和ser2的并集 ser_u = pd.Series(np.union1d(ser1, ser2)) # 求ser1和ser2的交集 ser_i = pd.Series(np.intersect1d(ser1, ser2)) # ser_i在ser_u的补集就是ser1和ser2不相同的项 ser_u[~ser_u.isin(ser_i)] #> 0 1 1 2 2 3 5 6 6 7 7 8 dtype: int64