Pandas库
基础
概述
-Pandas是一个开源的第三方Python库,从Numpy和Matplotlib的基础上构建而来
-Pandas名字衍生自术语"paneldata"(面板数据)和"Pythondataanalysis"(Python数据分析)
-Pandas已经成为Python数据分析的必备高级工具,它的目标是成为强大、灵活、可以支持任何编程语言的数据分析工具
-Pandas是Python语言的一个扩展程序库,用于数据分析
-Pandas是一个开放源码、BSD许可的库,提供高性能、易于使用的数据结构和数据分析工具
-Pandas一个强大的分析结构化数据的工具集,基础是Numpy(提供高性能的矩阵运算)
-Pandas可以从各种文件格式比如CSV、JSON、SQL、MicrosoftExcel导入数据
-Pandas可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征
-Pandas广泛应用在学术、金融、统计学等各个数据分析领域
-Pandas的出现使得Python做数据分析的能力得到了大幅度提升,它主要实现了数据分析的五个重要环节:加载数据、整理数据、操作数据、构建数据模型、分析数据
安装
pipinstallpandas==1.1.5-ihttps://pypi.tuna.tsinghua.edu.cn/simple/
内置数据结构
在ndarray数组(NumPy中的数组)的基础上构建出了Series(一维数据结构)、DataFrame(二维数据结构)
-
-
-
-
- Series是带标签的一维数组,这里的标签可以理解为索引,但这个索引并不局限于整数,它也可以是字符类型,比如a、b、c等
- DataFrame是一种表格型数据结构,它既有行标签,又有列标签
-
-
-
Series
PandasSeries类似表格中等一个列(column),类似于一维数组,可以保存任何数据类型Series由索引(index)和列组成
-
-
-
-
- pandas.Series(data,index,dtype)
- data:一组数据(ndarray类型)index:数据索引标签,如果不指定,默认从0开始dtype:数据类型,默认会自己判断copy:表示对data进行拷贝,默认为False
- pandas.Series(data,index,dtype)
-
-
-
创建Series对象的方式
-
-
-
-
- importpandasaspd#Series空对象defone():series_one=pd.Series(dtype='f8')print('空对象:\n',series_one)
- 直接赋值创建Series对象
- series_one=pd.Series([1,2,3,4,5],dtype='f8')print('Series对象:\n',series_one)
- ndarray创建Series对象
- array_one=np.array(['小明','小红','小紫'])index=np.arange(3)series_one=pd.Series(data=array_one,index=index)
- 字典创建Series对象
- data={"name":"陈蕾","gender":"男"}result=pd.Series(data=data)
- 标量创建Series对象
- result=pd.Series(data=5,index=[1,2,3,4,5])
-
-
-
访问Series数据
result = pd.Series(data=data)
Series常用属性
Series常用方法
-
head() 和 tail()
-
查看 Series 的某一部分数据,使用 head() 或者 tail() 方法。其中 head() 返回前 n 行数据,默认显示前 5 行数据,tail() 返回后 n 行数据,默认为后 5 行
-
-
isnull() 和 nonull()
-
isnull() 和 nonull() 用于检测 Series、DataFrame 中的缺失值。所谓缺失值,顾名思义就是值不存在、丢失、缺少
-
- isnull():如果为值不存在或者缺失,则返回 True
-
- notnull():如果值不存在或者缺失,则返回 Fal
-
DataFrame
基本
-
-
-
-
- DataFrame一个表格型的数据结构,既有行标签(index),又有列标签(columns),它也被称异构数据表,所谓异构,指的是表格中每列的数据类型可以不同,比如可以是字符串、整型或者浮点型等,形如:
-
-
-
-
-
-
-
- -DataFrame的每一列数据都可以看成一个Series结构,只不过,DataFrame为这些行中每个数据值增加了一个列标签
- -同Series一样,DataFrame自带行标签索引,默认为“隐式索引”即从0开始依次递增,行标签与DataFrame中的数据项一一对应当然你也可以用“显式索引”的方式来设置行标签
-
-
-
pd.DataFrame(data,index,columns,dtype,copy)
-
-
-
-
- data:一组数据(ndarray、series,map,lists,dict等类型)index:索引值,或者可以称为行标签coumns:列标签,默认为RangeIndex(0,1,2,…,n)dtype:数据类型copy:默认为False,表示复制数据data
-
-
-
创建DataFrame对象
-
-
-
-
- **创建DataFrame对象的方式:**
- -列表
- -字典
- -Series
- -Numpyndarrays
- -另一个DataFrame
- 创建DataFrame空对象
- result=pd.DataFrame()
- 列表创建DataFrame对象
- data=['小明','小红','小紫']column=['name']result=pd.DataFrame(data=data,columns=column)
- 列表嵌套列表创建DataFrame对象
- data=[['小米',18],['小红',19],['小紫',20]]result=pd.DataFrame(data=data,columns=['name','age'])
- 列表嵌套字典创建DataFrame对象
- data=[{'name':"张三",'age':18},{'name':"小红",'gender':"男",'age':19}]result=pd.DataFrame(data=data)
- 字典创建DataFrame对象
- data={"name":['小米','小红','小紫'],"age":[18,19,20]}result=pd.DataFrame(data=data,dtype=float)
- Series创建DataFrame对象
- data={'one':pd.Series([1,2,3],index=['a','b','c']),
- 'two':pd.Series([1,2,3,4],index=['a','b','c','d'])}
- result=pd.DataFrame(data=data)
- **创建DataFrame对象的方式:**
-
-
-
列索引操作
-
-
-
-
- DataFrame可以使用列索(columnsindex)引来完成数据的选取、添加和删除操作
- 选取数据
- dname['name']
- 添加数据
- 添加新列
- 使用df['列']=值,插入新的数据列:result['three']=pd.Series(data=[11,22,33],index=['a','b','c'])
- 添加新行
- df.loc['e']=[17,18,19,20]
- 在指定的位置插入新列
- #使用insert方法在位置1插入新列'D'df.insert(1,'D',[13,14,15,16])
- 添加新列
- 修改数据
- result=pd.DataFrame(data=data)result['two']=pd.Series(data=[1,2,3],index=['a','b','c'])
- 删除数据
- 通过drop方法删除DataFrame中的数据,默认情况下,drop()不会修改原DataFrame,而是返回一个新的DataFrame。axis=1,删除列
- DataFrame.drop(labels=None,axis=0,index=None,columns=None,level=None,inplace=False,errors='raise')
-
-
-
行索引操作
-
-
-
-
- loc选取数据
- DataFrame.loc[row_indexer,column_indexer]
- -row_indexer:行标签或布尔数组。
- -column_indexer:列标签或布尔数组。
- 不能通过索引位置获取
- DataFrame.loc[row_indexer,column_indexer]
- iloc选取数据
- iloc方法用于基于位置(integer-locationbased)的索引,即通过行和列的整数位置来选择数据。
- 不能通过索引标签获取
- DataFrame.iloc[row_indexer,column_indexer]
- -row_indexer:行位置或布尔数组。
- -column_indexer:列位置或布尔数组。
- iloc方法用于基于位置(integer-locationbased)的索引,即通过行和列的整数位置来选择数据。
- 切片多行选取
- 通过切片的方式进行多行数据的选取
- 切片获取行和通过iloc方法获取行从结果上没有区别,切片是基于位置的切片操作,iloc是基于位置的索引操作。
- 添加数据行
- append()方法##pandas1.4.0后已弃用
- append()方法用于将一个Series或DataFrame追加到另一个DataFrame的末尾。#已弃用
- DataFrame.append(other,ignore_index=False,verify_integrity=False,sort=False)#已弃用
- other:
- -类型:Series或DataFrame。
- -描述:要追加的数据。
- ignore_index:
- -类型:Series或DataFrame。
- -描述:要追加的数据。
- verify_integrity:
- -类型:布尔值,默认为False。
- -描述:如果为True,则在创建具有重复索引的DataFrame时引发ValueError。
- sort:
- -类型:布尔值,默认为False。
- -描述:如果为True,则在追加之前对列进行排序。
- other:
- loc方法添加新行
- data={'A':[1,2,3,4],'B':[5,6,7,8],'C':[9,10,11,12]}df=pd.DataFrame(data,index=['a','b','c','d'])#添加新行'e'df.loc['e']=[17,18,19,20]
- append()方法##pandas1.4.0后已弃用
- 删除数据行
- 您可以使用行索引标签,从DataFrame中删除某一行数据。如果索引标签存在重复,那么它们将被一起删除。使用的是drop函数
- dorp(),默认axis=0,删除行
- loc选取数据
-
-
-
常用属性和方法
-
-
-
-
-
- head()tail()默认值为5
-
-
-
-