pandas数据整理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas数据整理相关的知识,希望对你有一定的参考价值。
参考技术A 一、drop()方法1、df.drop()删除一行或一列
print(df.isnull().sum()) #查看空值汇总
df.drop(labels=None,index=None,columns=None) #labels参数指定要删除的行或列的名字,index参数指定要删除的行,columns参数指定要删除的列,用列表给定。
df.drop(labels=[0,2],axis=0) #删除1-2行。
df.drop(labels=[0,2],axis=1) #删除1-2列。
df.drop(['列标签'],axis=1)#删除指定列标签的列,如果是单列可以直接用列名。
df.drop(['航标签'])#删除指定行标签的行,如果是单行可以直接用行名。
2、axis参数值有两个,0表示删除行,为默认值;1表示删除列。
3、inplace参数值有两个,False表示返回一个新值,不修改原数据,为默认值;Ture表示在原来的数据基础上修改,除非确认要修改原数据,要慎用。
4、删除指定条件的行
(1)按行遍历指定符合条件的行索引
index_list=[]
for index, row_data in df.interrows():
if row_data['列标签']==‘指定条件’:
index_list.append(index)
(2)删除指定行
df1=df.drop(index_list,axis=0)
df1
(3)或者用列表表达式
index_list=[index for index, row_data in df.interrows() if row_data['列标签']==‘指定条件’]
df1=df.drop(index_list,axis=0)
df1
二、空值处理dropna()
1、删除整行或列
df1=df.dropna(axis=0)或df.dropna() #删除含有NAN的行,不添加axis参数默认删除行。
df2=df.dropna(axis=1) #删除含有NAN的列。
2、对空值进行填充
(1)使用常数填充
df3=df.fillna(0)
(2)用列的平均值填充
df4=df.fillna(df.mean())
(3)用列的前一个数值填充
df5=df.fillna(method=ffill,axis=1)
(4)用行的前一个数值填充
df5=df.fillna(method=ffill,axis=0)
三、移除重复数据
1、参数说明
df.drop_duplicates()方法的subset参数为所有列(默认),后指定列;keep参数为first(默认)、last和False;inplace参数为False(默认)和Ture。
df6=df.duplicated()#返回值为Ture和False
2、删除所有列都相同的行
df7=df.drop_duplicates() #删除所有列都相同的行,最常用的方式。
df.reset_index(drop=True) #重建索引
3、删除指定列值相同的行
df7=df.drop_duplicates(subset=['列名'],keep='first',inplace=False)#列名表示的是对比的列
df.reset_index(drop=True) #重建索引
四、计算两列值得到一新列值
1、使用列标签筛选,直接计算
df['新列标签']=df['第一列标签']*df['第一列标签']
2、使用位置索引遍历,每对值单独计算
for i in range(len(df['第一列标签'])):
df['新列标签'].iloc[i]=df['第一列标签'].iloc[i]*df['第一列标签'].iloc[i]
爬虫,爬取景点信息采用pandas整理数据
一、首先需要导入我们的库函数
导语:通过看网上直播学习得到,如有雷同纯属巧合。
import requests#请求网页链接
import pandas as pd#建立数据模型
from bs4 import BeautifulSoup
import io
import sys#防止乱码
sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding=‘gb18030‘)
注:如有库安装不了,可参考上一篇随笔。
二、源代码:
1 import requests 2 import pandas as pd 3 from bs4 import BeautifulSoup 4 import io 5 import sys#防止乱码 6 sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding=‘gb18030‘) 7 def get_url(n): 8 #获取网页链接 9 urls=[] 10 for i in range(1,n+1): 11 urls.append(‘https://travel.qunar.com/p-cs299878-shanghai-jingdian-1-%s‘ %i)#获取n段网页链接 12 return urls 13 14 pass 15 16 def get_data(url):#获取一段网页链接的数据 17 r=requests.get(url) 18 soup=BeautifulSoup(r.text,‘lxml‘)#lxml一种不错的编译器 19 ul=soup.find(‘ul‘,class_=‘list_item clrfix‘)#在网页中通过查找元素信息找到其名称 20 lis=ul.find_all(‘li‘)#查找所有信息 21 datalst=[]#定义一个数据字典 22 for li in lis: 23 dic={}#将需要查找的信息写入数据字典 24 dic[‘景点名称‘]=li.find(‘span‘,class_=‘cn_tit‘).text 25 dic[‘星级‘]=li.find(‘span‘,class_=‘cur_star‘)[‘style‘].split(‘:‘)[1].replace(‘%‘,‘‘)#将数据中的百分号去掉实现初步数据清洗 26 dic[‘经度‘]=li[‘data-lng‘] 27 dic[‘纬度‘]=li[‘data-lat‘] 28 datalst.append(dic) 29 return datalst 30 31 32 def get_alldata(n):#按要求查找多段网页链接的数据 33 alldata=[] 34 for url in get_url(n): 35 alldata.extend(get_data(url)) 36 return alldata 37 #print(get_alldata(2)) 38 df=pd.DataFrame(get_alldata(2))#建立pandas模型,按要求输出 39 print(df)
三、运行结果:
小有瑕疵,初学见谅!!!
以上是关于pandas数据整理的主要内容,如果未能解决你的问题,请参考以下文章