Data Wrangling with Python学习笔记

Chapter 5 适应不同类型的数据源

一、从CSV文件中读取文件
1、缺少表头时

import numpy as np
import pandas as pd
df1 = pd.read_csv(r'test1.csv',header=None) #如果不加None,则第一行数据就会被错误的当做表头
##添加表头
df1 = pd.read_csv(r'test1.csv',header=None,names=['aa','bb','cc']) ##给无表头的文件添加模板

2、读取不以逗号为分隔符的csv文件

df1 = pd.read_csv(r'test2.csv',sep=';') #test2文件是以;为分隔符的,如果是以其他符号为分隔符,则sep='其他符号'

3、重置csv的表头

##当源文件有表头,但我们想设置新的表头,需要用到header=0,然后再赋予新的names
df1 = pd.read_csv(r'test3.csv',header=0,names=['A','B','C']) 

4、读取csv文件时跳过初始行和页脚

##跳过表头,skiprows=n
df1 = pd.read_csv(r'test4.csv',skiprows=2) #前两行为源文件表格说明,因此需要跳过,跳过后读取第一行为表头,后面均为正常表格数据。
##跳过页脚,skipfooter=n
df1=pd.read_csv(r'test4.csv',skiprows=2,skipfooter=1,engine='python') #跳过页脚需要用skipfooter,engine='python'共同启用。
##读取前N行,nrows
pd.read_csv(r'test4.csv',nrows=2)##只读取前2行
##默认情况下,read_csv函数会忽略空白行,但有时候希望将其读入为NaN,这样可以计算原始文件中有多少这样的空白行,在某些情况下,这是默认数据流质量和一致性的指标。为此设置skip_blank_lines选项。
pd.read_csv(r'test5.csv',skip_blank_lines=False)##不跳过空白行

5、从Zip中读取csv

##pandas允许从压缩文件中(如:.zip、.gz、.bz2、.xz文件)读取文件,但唯一的要求就是目标文件csv是压缩文件中唯一的文件
#(这不ok)
pd.read_csv(r'test4.zip')

二、从Excel中读取数据

df2 = pd.read_excel('data.xlsx',sheet_name='参数')

##如果excel中有多个个工作表,但是将sheet_name参数设置为None,那么read_excel将返回一个有序的字典。

df3 = pd.read_excel('data2.xlsx',sheet_name=None)
df3.keys()
##odict_keys('资产','还本','参数')

三、从文本中读取数据

df3 = pd.read_table('table_ex.txt')
df3 = pd.read_table('table_ex.txt',sep=',')

四、从非文本源中读取数据

1、从url中读取数据

url = 'https://www.fdic.gov/resources/resolutions/bank-failures/failed-bank-list/'
list_of_url = pd.read_html(url)
df14 = list_of_url [0]
df14.head()

2、从json文件中读取

df16 = pd.read_json('movies.json')
df16.head()

3、从pdf中读取表格文件

from tabula import read_pdf  ##pip install tabula-py
df18 = read_pdf('Housing_data.pdf',pages=[1],pandas_options={'header':None})##代码出来的结果为list

##给从pdf中提取出来的数据,加上标题
names = ['A','B','C','D']
df18 = read_pdf('Housing_data.pdf',pages=[1],pandas_options={'header':None,'names':names[:10})

##################################################
接下来是爬虫的相关部分

五、Beautifulsoup 4 和网页解析简介

bs4用于从HTML或者XML文档获取数据,它提供一种友好的、标准化的、符合语言习惯的方式来浏览和查询文档。他不包括解析器,但支持不同的解析器。
HTNL结构内容讲解
1、任何以<开始并以>结尾的都属于元素,有些元素有一个开始元素和一个结束元素,其中结束元素以“</”开头,并且与开始元素同名,例如<p></p>,他们可以包含任意数量的其他类型的元素;有些元素没有结束部分,例如<br/>,他们不能包含任何内容。
2、元素可以具有属性,这些属性可以用来修改元素的默认行为。
比如<a>元素需要一个href属性告诉浏览器单击该特定<a>时应该导航到哪一个网站。
例如:<a href=“http://cnn.com”>
树状结构,层层提取~~~
3、使用BeautifulSoup读取html文件

 from bs4 import BeautifulSoup
 with open('test.html','r') as fd:
     soup = BeautifulSoup(fd)
     print(soup.prettify())
     print(soup.contents) ##成员变量
    ##查看标签中的内容,使用“.”即可
     print(soup.p)##查看标签为p的内容
     ##如果有很多p标签,则使用find_all
     all_ps = soup.find_all('p')
     print (all_ps)
##将网页中的表格的header和body分开提取出来再组合在一起。     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值