目录
前言
一、导入.xls或.xlsx文件
1.常规导入示例:
2.通过行、例索引导入
3.常用方法
二、导入CSV文件
1.导入.csv文件主要使用Pandas的read_csv()方法
三、导入.txt文本文件
1. 使用 read_csv() 方法导入 1月的 .txt 文件示例:
四、导入HTML网页
1.使用 read_html() 方法导入 NBA 球员的薪资数据示例:
前言
pandas主要包括两个数据结构,即Series对象和DataFrame对象,本文主要分别介绍导入外部数据(.xls或.xlsx和.csv或.txt或html网页)。
一、导入.xls或.xlsx文件
常用Pandas的read_excel( )方法,语法如下:
pandas.read_excel(
io,sheet_name=0,header0,names=None,index_col=None,usecols=None,squeeze=False,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skiprows=None,nrow=None,na_values=None,keep_default_na=True,verbose=False,parse_dates=False,date_parser=None,thousands=None,comment=None,skipfooter=0,conver_float=True,mangle_dupe_cols=True, **kwds)
参数说明:
io:字符串,.xls或.xlsx文件路径或文件对象(数据的加载路径)
sheet_name:None、字符串、整数、字符串列表或整数列表,默认值为 0。字符串用于工作表名称,整数为索引表示工作表位置,字符串列表或整数列表用于请求多个工作表,为 None时获取所有工作表。参数值如下图所示
值说明sheet_name=0第一个Sheet页中的数据作为DataFramesheet_name=1第二个Sheet页中的数据作为DataFramesheet_name=''Sheet1''名为Sheet的Sheet页的数据作为DataFramesheet_name=[0,1,'Sheet3']第一个、第二个和名为Sheet的Sheet页中的数据作为DataFrame
header:指定作为列名的行,默认值为0,即取第一行的值为列名。数据为除列名以外的数据;若数据不包含列名,则改首 header-None。
names:默认值为 None,要使用的列名列表。
index_col:指定列为索引列,默认值为 None,索引0是 DataFrame 的行杯签。
usecols:int、list 列表或子符串,默认值为 None。
>>如果为 None,则解析所有列。 >>如果为int,则解析最后一列。 >>如果为 list 列表,则解析列号列表的列。 >>如果为字符串,则表示以逗号分隔的 Excel 列字母和列范围列表 (例如“A:E”或 “A,C,E:F”)。范围包括双方。
squeeze:布尔值,默认值为 False, 如果解析的数据只包含一列,则返回一个 Series。
dtype:列的数据类型名称或字典,默认值为 None。例如{a':np.float64,b'np.int32}。
skiprows:省略指定行数的数据,从第一行开始。
skipfooter: 省略指定行数的数据,从尾部数的行开始。
1.常规导入示例:
import pandas as pd
df = pd.read_excel('data.xlsx',encoding='utf-8')
print(df)
姓名 年龄 工作 工资 0 张三 25 学生 200 1 李四 24 工人 3000 2 王五 22 NaN 5000 3 冯六 33 包工头 8000
第一个参数是路径,既可以使用绝对路径又可以使用相对路径,如果文件名含有汉字,注意指定设置一下属性encoding = 'utf-8',另设置sheet_name指定具体的Sheet名字,也可传入sheet的顺序,从0开始。
2.通过行、例索引导入
DataFirarme 是二维数据结构,因此它既有行索引又有列素引。当导入 Excel 数据时,行索引会自动生成,而列素引则默认将第0行作为列素引
df = pd.read_excel('data.xlsx',encoding='utf-8',usecols=[0,2])
姓名 工作 0 张三 学生 1 李四 工人 2 王五 NaN 3 冯六 包工头
3.常用方法
shape()可以获取excel文件的行和列,以元祖形式返回; info()获取数据类型; astype() 可转换列里面的数据类型,括号里是要转换的目标类型;如df[列2].astype('float64'); df['列'].dtype可查看列的类型 isnull()判断哪个值是缺失值; dropna()删除有缺失值的行,返回删除后的数据,传入参数how=all,要全为空值才会删除; fillna()括号内可直接填入要要填充的值,也可指定列填充,以字典形式传参; drop_duplicates()默认对所有重复值判断,默认保留keep=first第一个行值;通过keep修改,值可为last,保留最后一个,还可设置keep为False,一个也不保留。另也可指定列名去重,如传入参数subset=['列名1,列名2'],注意是以列表形式传参; head()传入的参数代表获取前几行; describe()掌握数值的分布情况,如均值,最值,方差,分位数。 column和index可设置列索引和行索引,以列表形式传参; set_index()重新设置索引列,传入要指名要用做行索引的名称; reset_index(level = None,drop=False,inplace = False),level指定要将层次化索引的第几级别转化为columns,第一个索引为0级,第二个为1级,默认全部转化为columns。drop是否将原索引删掉,inplace是否修改原数据表;该方法常用于数据分组和数据透视表中。 rename()重命名索引,可重新设置columns和index,以字典形式传参,key为原值,value为替换后的值。
二、导入CSV文件
1.导入.csv文件主要使用Pandas的read_csv()方法
import pandas as pd
df = pd.read_csv('data.csv',encoding='gbk',)
print(df)
注意:
上述代码中指定了编码格式,即encoding-gbk'。Dython 常用的编码格式是UIF-8和gbk,默认编码格式为 UTF-8。导入.csv文件时,需要通过encoding 参数指定编码格式。当将Excel文件另存为.csv 文件时,默认编码格式为gbk,此时当编写代码导入.csv 文件时,就需要设置编码格式为gbk,与源文件编码格式保持一致;否则会提示错误。
三、导入.txt文本文件
导入.txt 文件同样使用 Pandas的read_csv()方法,不同的是需要指定sep参数(如制表行\t)。read_ csv()方法读取.txt 文件返回一个 DataFrame,像表格一样的二维数据结构,如图所示。
1. 使用 read_csv() 方法导入 1月的 .txt 文件示例:
四、导入HTML网页
导入 HTML 网页数据主要使用 Pandas 的read_html方法,该方法用于导入带有table 标签的网页 表格数据,语法如下:
pandas.read_html(
io,match='.+',flavor=None,header=None,index_col=None,skiprows=None,attrs=None,parse_dates=False,thousands=',',encoding=None,decimal='.',converters=None,na_values=None,keep_default_na=True,displayed_only=True)
常用参数说明: io: 字符串,文件路径,也可以是 URL 链接。网址不接受https,可以尝试去掉https 中的s 后爬取,如 http://www.mingribook.com。
match:正则表达式,返回与正则表达式匹配的表格。
flavor:解析器默认为 lxml。
header:指定列标题所在的行,列表 list 为多重索引。
index_col:指定行标题对应的列,列表 list 为多重索引。
encoding: 宇符串,默认为 None, 文件的编码格式。
返回值:返回一个 DataFrame。
使用read_htnl()方法前,首先要确定网页表格是否为 table 类型。例如,NBA 球员薪资网页 (http://www.espn.com/nba/salaries),右击该网页中的表格,在弹出的快捷菜单中选择“检查元素” 命令,查看代码中是否含有表格标签
发表评论