持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第15天,点击查看活动详情
1.环境配置及库包要求
- pandas库 1.2.4版本
- python3.8
- jupyter notebook环境运行
2.pandas数据结构
pandas中有两个主要的数据结构:Series和DataFrame。
2.1 Series
Series是一种类似于一维数组的对象,它由一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据即可产生最简单的Series:
temp=pd.Series([3,4,23,32,16,23,43,38,39])
temp
我们可以清晰的看出:索引在左边,值在右边。Series会自动创建一个0到N-1(N为数据的长度)的整数型索引。也可以通过Series的values和index属性获取其数组表示形式和索引对象:
temp.values
temp.index
temp2=pd.Series([4,12,35,9],index=['a','b','c','d'])
temp2
对于许多应用来说,Series最重要的一个功能是,可以根据运算的索引标签自动对齐数据:
temp3=pd.Series([4,12,35,9],index=['a','b','c','d'])
temp4=pd.Series([100,100,100,100],index=['m','b','c','d'])
temp3+temp4
Series的索引可以通过赋值的方式就地修改:
temp3=pd.Series([4,12,35,9],index=['a','b','c','d'])
temp3.index=['A','B','C','D']#将索引就地更改
temp3
2.2 DataFrame
DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame中的数据是以一个或多个二维块存放的。建DataFrame的办法有很多,最常用的一种就是直接传入一个由等长列表或Numpy数组组成的字典:
data={'state':['ohio','hjki','like','love','most','wonderful'],'year':[2000,2001,2002,2003,2004,2005],'pop':[1.5,1.7,2.5,2.4,2.7,6.4]}
frame=pd.DataFrame(data)
frame
当然如果传入的数据找不到,就会在结果中产生缺失值:
frame2=pd.DataFrame(data,columns=['year','state','pop','four'],index=[1,2,3,4,5,6])
frame2
可以通过类似字典标记的方式或属性的方式,可以将DataFrame的列获取为一个Series:
frame2['pop']
frame2[column]适用于任何列的名,但是frame2.column只有在列名是一个合理的Python变量名时才适用。
列可以通过赋值的方式进行修改。例如,我们可以给空的'four'赋上一个标量值或一组值:
frame2['four']=[1,2,3,4,4,5]
frame2
这里我们需要注意一点:将列表或数组赋值给某个列时,其长度必须跟DataFrame的长度相匹配。如果赋值的是一个Series,就会精确匹配DataFrame的索引,所有的空位都将被填上缺失值。
为不存在的列赋值会创建出一个新列。关键字del用于删除列。作为del的例子,我们先添加再删除:
frame2['five']=frame2.year==2002
frame2
接下来我们进行删除操作:
del frame2['five']
frame2
注意:通过索引方式返回的列只是相应数据的视图而已,并不是副本。因此,对返回的Series所做的任何就地修改全都会反映到源DataFrame上。通过Series的copy方法即可指定复制列。