ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Pandas 基础操作(案持续更新)

Pandas 基础操作(案持续更新)

引言

说到excel".csv"表格中的数据处理,就不得不提到pandas模块。这里简单分享一下pandas模块的基础操作。这里表格文件的数据类型以xlsxcsv来举例。

正文

创建一维带索引的数据

Pandas 库中,通常我们需要使用 pd.Series() 函数来创建一维数据。Pandas 库中的索引 index 是按行显示,index 参数的长度必须要保持和数据的行数一致,否则就会报错。

df=pd.Series([3,-5,7,4],index=['a','b','c','d'])print(df)""" reuslt: a 3 b -5 c 7 d 4 dtype: int64 """

可以看到一维的数据是以列的形式进行排列的。

df=pd.Series([3,-5,7,4])print(df)""" result: 0 3 1 -5 2 7 3 4 dtype: int64 """

Pandas 生成的一维数据默认是带索引值的,且索引值从 0 开始。

注意:

  1. Pandas Series 创建后默认就有索引,而且无法彻底关闭或删除索引,因为索引是 Series 的核心数据结构组成部分。但是我们可以在输出的时候令其不显示。
  2. 一维数据无法设定列名

创建二维带索引的数据

Pandas 库中,通常我们需要使用 pd.DataFrame() 函数来创建二维数据。

默认列名的二维数据

data=[["Belgium","india","Brazil"],["Brussels","New Delhi","Brasilia"],["11190846","1303171035","207847528"]]df=pd.DataFrame(data)print(df)


Pandas 库中二维数据默认的列名称从 0 开始,与 index 参数类似。二维数据必须有列名。

自定义列名的二维数据

从列表指定

如果想要自己指定列名,可以使用如下方法:

data=[["Belgium","india","Brazil"],["Brussels","New Delhi","Brasilia"],["11190846","1303171035","207847528"]]df=pd.DataFrame(data,columns=["Country","Capital","Population"])print(df)


可以通过 columns 参数指定二维数据的列名称。

从字典指定

也可以通过字典的关键字信息对二位数据的列名进行指定。

importpandasaspd data={"Country":["Belgium","india","Brazil"],"Capital":["Brussels","New Delhi","Brasilia"],"Population":["11190846","1303171035","207847528"]}df=pd.DataFrame(data)print(df)

当然,也可以再次通过关键字进行列名指定。我们得到与之前一样的结果

当前默认列名为["Country", "Capital", "Population"],如果再次通过关键字 columns 进行指定,会重写默认列名参数。但是因为此时数据是存放在字典中的,列名被改写后,原始 values 数据不会存在。

importpandasaspd data={"Country":["Belgium","india","Brazil"],"Capital":["Brussels","New Delhi","Brasilia"],"Population":["11190846","1303171035","207847528"]}df=pd.DataFrame(data,columns=["0","1","2"])print(df)


可以看到这里我们创建了一个二维数据,其中列标签沿着横向排列。索引值沿着纵向排列。

即,pd.Series() 函数用于创建一维数据,pd.DataFrame() 函数用于创建二维数据。

获取一维数据中单个数据值

# 通过标签获得单个值df=pd.Series([3,-5,7,4],index=['a','b','c','d'])print(df['a'])""" reuslt: 3 """# 通过索引获得单个值print(df[0])""" reuslt: 3 """

我们通过标签或者索引均成功地获得了单个数据值

获取二维数据中单个数据值

数据:

Country Capital Population0Belgium Brussels111908461india New Delhi13031710352Brazil Brasilia207847528

生成数据代码:

data={'Country':['Belgium','india','Brazil'],'Capital':['Brussels','New Delhi','Brasilia'],'Population':['11190846','1303171035','207847528']}df=pd.DataFrame(data,columns=['Country','Capital','Population'])

打印数据代码:

print(df.iloc[0,0])print(df.iat[0,0])""" result: Belgium Belgium """

可以看到,通过DataFrame.iloc()DataFrame.iat()方法我们均成功地获取到了二维数组中的单个数据值。

我们也可以采用其他方式,比如:

print(df.loc[df["Country"]=='Belgium'])print(df.loc[df["Country"]=='Belgium'].values)print(df.loc[df["Country"]=='Belgium'].values[0])print(df.loc[df["Country"]=='Belgium']["Country"])print(df.loc[df["Country"]=='Belgium']["Country"].values)print(df.loc[df["Country"]=='Belgium']["Country"].values[0])print(df.loc[df["Country"]=='Belgium',"Country"])print(df.loc[df["Country"]=='Belgium',"Country"].values)print(df.loc[df["Country"]=='Belgium',"Country"].values[0])print(df.loc[0,"Country"])

输出结果如下,读者可自定比对体会:

Country Capital Population0Belgium Brussels11190846[['Belgium''Brussels''11190846']]['Belgium''Brussels''11190846']0Belgium Name:Country,dtype:object['Belgium']Belgium0Belgium Name:Country,dtype:object['Belgium']Belgium Belgium

可以看到,df.loc[df["Country"]=='Belgium']["Country"]df.loc[df["Country"]=='Belgium', "Country"]的输出结果一致,它们等价,可以类比 numpy 二维数组操作。.

loc() 函数与 iloc() 函数的区别是:loc 基于标签(label)索引,iloc 基于位置(position)索引。

获取DataFrame子集合的值

data={'Country':['Belgium','india','Brazil'],'Capital':['Brussels','New Delhi','Brasilia'],'Population':['11190846','1303171035','207847528']}df=pd.DataFrame(data,columns=['Country','Capital','Population'])print(df[1:])""" result: Country Capital Population 1 india New Delhi 1303171035 2 Brazil Brasilia 207847528 """

可以看到, 我们成功获取到了索引值大于1的原始DataFrame中的所有值。

通过标签获得单行的值

data={'Country':['Belgium','india','Brazil'],'Capital':['Brussels','New Delhi','Brasilia'],'Population':['11190846','1303171035','207847528']}df=pd.DataFrame(data,columns=['Country','Capital','Population'])print(df.loc[[0]])""" result: Country Capital Population 0 Belgium Brussels 11190846 """

可以看到,我们成功获取到了单行的值。

通过标签获得单列的值

data={'Country':['Belgium','india','Brazil'],'Capital':['Brussels','New Delhi','Brasilia'],'Population':['11190846','1303171035','207847528']}df=pd.DataFrame(data,columns=['Country','Capital','Population'])print(df[['Country']])""" result: Country 0 Belgium 1 india 2 Brazil """

可以看到,我们成功获取到了单列的值。

关于提取数据时参数为什么要带中括号的原因可以看这篇pandas中提取单行单列数据时的参数问题(超链接点击跳转)。

码字不易,如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~

返回列表