文章目录
前言
此文主要记录pandas的基础知识,主要由数据类型、数据读取、数据填充等组成
一、pandas是什么?
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
二、基础内容
1、数据类型
类型 | 解释 |
---|---|
Series | 一维数组 |
DataFrame | 二维数组 |
Panel | 三维数组 |
Pannel 4D | 四维数组 |
Panel ND | 多维数组 |
建立Series
1.基本结构
pandas.Series(data=None,index=None)其中data是数据,index为索引。
import pandas as pd
s = pd.Series({'a':10,'b':20,'c':30})
#利用type s来确定s的类型
print(s)
type s
其中a,b,c为索引
2.生成一个一维随机数组
pandas.Series(pandas.random.randn(5))
建立DataFrame
1.基本结构
pandas.DataFrame(data=None,index=None,columns=None),其中data是二维数组的数据,index为行的索引,columns为列标
2.DataFrame的数据构建类型
1 一维数组、列表、字典或者Series字典
2 二维或者结构化的numpy.ndarray
3 一个Series或者另一个DataFrame
3.由Series构建DataFrame
df = pandas.DataFrame({'one':pandas.Series([1,2,3]),
'two':pandas.Series([4,5,6])})
其中one、two为列标签
4.由列表构建DataFrame
df = pandas.DataFrame([{'one':1,'two':4},
{'one':2,'two':5},
{'one':3,'two':6}])
5.基于二维数组构建DataFrame
pandas.DataFrame(numpy.random.randint(5,size=(2,4)))
ranint(5,size=(2,4)),其中5表示随机整数的范围在0-5,size中的数字表示行数以及列数,确定二维数组的大小。
2、数据读取
data = pd.read_csv(
'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
#数据来源可以是网络的URL,也可以是本地文件(使用相对地址)
print(data.head())
数据的显示
#显示前五条数据
data.head()
#指定显示后七条数据
data.tail(7)
#输出每一列数据的数据个数,最大值,最小值等
data.describe()
#将DataFrame转换为numpy数组
data.values
#查看索引
data.index()
#查看列标
data.columns()
#查看形状
data.shape
3、数据选择
1.基于索引数字选择
pandas.iloc()的接受类型:
1 整数
2 整数组成的列表或数组
3 布尔数值
4 可返回索引值的函数或者参数
#切片获取前前三数据
data.iloc[:3]
#选择特定的一行
data.iloc[5]
#选择1,3,5行数据
data.iloc[[1,3,5]]
#选择2-4行
data.iloc[:,1:4]
2.基于标签名选择
pandas.loc[]接受的数据类型:
1 单个标签,例如标签2或者‘a’
2 列表或者数组包含的标签,[‘a’,‘b’,‘c’]
3 切片对象,首尾都包含在内,’a‘:’e’,选中从a列到e列
4 布尔数组
5 可返回标签的函数或者参数
#df是构建的DataFrame
df = data
#选择前三行
df.loc[0:3]
#选择1,3,5行数据,对应的标号为0,2,4
df.loc[[0,2,4]]
#选择A到E列
df.loc[:,'A':'E']
#选择1、3行的E后面的所有列
df.loc[[0:\,2],'E':]
4、数据删减
1.基本内容
.drop开头的方法都与数据删减有关
DataFrame.drop可以直接去掉数据中指定的行和列,一般使用时,我们按照labels选择列标签,axis选择行标签
2.基本函数
data.drop_duplicates()
#用于数据的去重,利用参数axis来选择去重行还是列
data.dropna()
#删除数据中的缺失值
5、数据填充
一般不乱填数据,更多的是对数据的缺失值进行填充。
1.检测缺失值
NaN——数据缺失
NaT——时间戳缺失
data.isna()
#如果是缺失值,返回布尔值true,反之false
data.notna()
#如果不是缺失值,返回布尔值true,反之false
2.缺失值处理
data.dropna()
#剔除缺失值
data.fillna(0)
#将缺失值NaN替换为0
#除了直接替换填充,我们还可以通过参数,
#将缺失值前面或者或者后面的值进行填充给相应的缺失值
data.fillna(method='pad')
#前面值填充
data.fillna(method='bfill')
#后面值填充
data.iloc[[3,5],[1,3,5]]=np.nan
#将2、4、6列的3、5行设置为缺失值
data.fillna(method='pad')
#利用前面值进行正向填充
data.fillna(method='pad',limit=1)
#利用后面值进行有限定次数的填充,限定的次数由limit设置
data.fillna(data.mean()['C':'E')
#对C到E列的缺失值使用平均值填充
#利用平均值的方法来填充特定的行列
3.插值填充
interpolate()默认参数为线性填充,可以选择相关函数来决定是线性还是给非线性。
interpolate()支持的插值算法:method=
1 如果数据增长率越来越大,使用method=‘quadratic’二次插值
2 数据呈现出累计分布,method=‘pchip’
3 如需填补缺失值,以平滑绘图为目的,method=‘akima’,但是参数akima需要有Scipy库的支持。
三、使用步骤
1.引入库
代码如下(示例):
import pandas as pd
2.读入数据
代码如下(示例):
data = pd.read_csv(
'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())
该处使用的url网络请求的数据,也可以使用相对地址的本地文件。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。