【Python3 爬虫学习笔记】Pandas:强大的数据处理套件 2

编程入门 行业动态 更新时间:2024-10-12 14:25:35

【Python3 <a href=https://www.elefans.com/category/jswz/34/1770264.html style=爬虫学习笔记】Pandas:强大的数据处理套件 2"/>

【Python3 爬虫学习笔记】Pandas:强大的数据处理套件 2

DataFrame数据的修改及排序
DataFrame数据的修改

修改DataFrame数据的操作非常简单,只需要把上例中读取的数据项设定为指定值即可。例如,把陈聪明的数学成绩修改为91:

df.ix["陈聪明"]["数学"] = 91

或把陈聪明的所有成绩都改为80:

df.ix["陈聪明", :] = 80
DataFrame数据的排序

Pandas提供了两种DataFrame数据排序功能。
第1种排序功能是根据指定列标题下面的值进行排序,语法为:

数据变量 = df.sort_values(by=列表[, ascending=布尔值])
  • 列标题:设置需要以哪一列作为排序依据
  • 布尔值:可省略,True表示升序(默认值),False表示降序。
    例如,根据数学成绩做降序排序,并把结果存入df1中:
df1 = df.sort_values(by="数学", ascending=False)


第2中排序功能是根据行标题或列标题进行排序,语法为:

数据变量 = df.sort_index(axis=行列值[, ascending=布尔值])
  • 行列值:0表示根据行标题排序,1表示根据列标题排序。
    例如,按照行标题升序排序,并把结果存至df2中:
df2 = df.sort_index(axis=0)

删除DataFrame数据

Pandas可通过drop()方法删除DataFrame数据,语法为:

数据变量 = df.drop(行标题或列标题[, axis=行列值])
  • 行列值:0表示根据行标题排序(默认值),1表示根据列标题排序。
    例如,删除陈聪明(行标题)的成绩:
df1 = df.drop("陈聪明")    # axis参数可省略

执行结果:

删除数学(列标题)成绩:

df2 = df.drop("数学", axis = 1)


若删除的行或列超过1个,需使用列表作为参数,例如删除数学及自然成绩:

df3 = df.drop(["数学", "自然"], axis=1)

如果删除的列或行项目很多且连续,可使用删除“范围”的方式来处理。删除连续行的语法为:

数据变量 = df.drop(df.index[开始数值:结束数值][,axis=行列值]

执行结果会删除“开始数值”到“结束数值-1”行,例如删除第2行到第4行(陈聪明、黄美丽、熊小娟)的成绩:

df4 = df.drop(df.index[1:4])


删除连续列的语法为:

数据变量 = df.drop(df.columns[开始数值:结束数值][,axis=行列值]

例如,删除第2列到第4列(数学、英文、自然)成绩:

df5 = df.drop(df.columns[1:4], axis=1)

导入数据

有时候,手工生成Pandas的DataFrame数据是件非常麻烦的事情,所以我们通常会先把数据保存在Excel表格或数据库中,然后再把数据导入Pandas。我们还可以直接从网页中抓取表格数据并导入到Pandas中,作为DataFrame数据。
Pandas常用的导入数据方法有:

方法说明
read_csv导入表格型数据(*.csv)
read_excel导入Microsoft Excel型数据(*.xlsx)
read_sql导入SQLite数据库型数据(*.sqlite)
read_json导入Json型数据(*.json)
read_html导入网页中的表数据(*.html)

Pandas的read_html()方法会用到html5lib包,安装该包:

conda install html5lib

以中国历年GDP数据表为例:

import pandas as pd
tables = pd.read_html(".html")

其中,read_html()方法返回DataFrame列表,列表中的每一个元素是网页中的一个表格。有时候一个网页有多个表格,需要我们以手动方式在网页的源代码中通过"<table"搜索。

import pandas as pd
tables = pd.read_html(".html")
n = 1
for table in tables:print("第 " + str(n) + " 个表格:")print(table.head())print()n += 1
import pandas as pd
tables = pd.read_html(".html")
table = tables[18]
table = table.drop(table.index[[0,1]])
table.columns = ["年份", "M2指标", "GDP绝对额", "M2/GDP"]
table.index = range(len(table.index))
print(table)

更多推荐

【Python3 爬虫学习笔记】Pandas:强大的数据处理套件 2

本文发布于:2024-02-07 06:32:46,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1753949.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:爬虫   数据处理   套件   学习笔记   强大

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!