二、导入数据
1、导入Excel文件
导入.xls
或.xlsx
文件:
pd.read_excel(io, sheet_name, header)
参数说明:
- io:
.xls
或.xlsx
文件路径或类文件对象 - sheet_name:工作表,取值如下表所示
- header:默认值为0,取第一行的值为列名,数据为除列名以外的数据。如果数据不包含列名,则设置header=None
值 | 说明 |
sheet_name=0 | 第一个Sheet页中的数据作为DataFrame对象 |
sheet_name=1 | 第二个Sheet页中的数据作为DataFrame对象 |
sheet_name=‘Sheet1’ | 名称为’Sheet1’的Sheet页中的数据作为DataFrame对象 |
sheet_name=[0, 1, ‘Sheet3’] | 第一个、第二个和名称为Sheet3的Sheet页中的数据作为DataFrame对象 |
sheet_name=None | 读取所有工作表 |
1.1 导入全部数据
import pandas as pd df = pd.read_excel('../data/京东鞋子评论信息.xlsx', sheet_name='码数分析', header=None) print(df)
0 1 2 0 39 2 0.2 1 40 1 0.1 2 42 4 0.4 3 43 2 0.2 4 45 1 0.1
1.2 导入一列数据
import pandas as pd df = pd.read_excel('../data/学员成绩统计.xlsx', sheet_name='及格成员名单', usecols=[1]) print(df)
姓名 0 刘磊 1 于爽 2 丁宁 3 高春艳 4 李帅 5 赵颖 6 杨春言 7 吴贤执 8 朱彦 9 李俊
1.3 导入多列数据
import pandas as pd pd.set_option('display.unicode.east_asian_width', True) df = pd.read_excel('../data/学员成绩统计.xlsx', sheet_name='及格成员名单', usecols=['姓名', '总成绩']) print(df)
姓名 总成绩 0 刘磊 71 1 于爽 69 2 丁宁 65 3 高春艳 67 4 李帅 73 5 赵颖 79 6 杨春言 65 7 吴贤执 45 8 朱彦 64 9 李俊 68
2、导入CSV文件
pd.read_csv(filepath_or_buffer, sep=',', header, encoding=None)
参数说明:
- filepath_or_buffer:字符串。文件路径,也可以是URL链接
- sep:字符串。分隔符
- header:指定作为列名的行,默认值为0。即取第一行的值为列名。数据为除列名以外的数据,若数据不包含列表,则设置header=None
- encoding:字符串,默认值为None。文件的编码格式
import pandas as pd df = pd.read_csv('../data/京东鞋子评论信息.csv', sep=',', encoding='gbk') print(df.head())
评论内容 评论时间 购买颜色 鞋码 0 清爽不油腻,百搭百配小白鞋。我就喜欢这一款了。 2021/7/26 11:57 黑白兰 39 1 和想象中的一样好 2022/3/27 19:15 灰黑 42 2 因为这是跑鞋,所以它的抓地能力被做的很有效,质感很好。 2021/8/24 22:03 黑白灰 40 3 鞋子质量很不错,看起来很舒服,但是鞋子容易弄脏,好在网面不是白色 2022/2/26 22:34 白灰绿 43 4 挺新颖的 2021/9/25 14:31 黑白灰 42
3、导入txt文件
pd.read_csv(filepath_or_buffer, sep='\t', header, encoding=None)
import pandas as pd df = pd.read_csv('../data/rating.txt', sep='\t', encoding='gbk', header=None) print(df.head())
0 1 2 3 0 196 242 9 88125094 1 852 456 8 74125896 2 423 521 2 15981236 3 123 125 0 12345695 4 147 741 4 14752385
4、导入HTML网页
pd.read_html(io, match='.+', flavor, header, encoding)
参数说明:
- io:字符串。文件路径,可以是URL链接,网址不接受https
- match:正则表达式
- flavor:解释器,默认为’lxml’
- header:指定列标题所在的行
- encoding:文件的编码格式
链接:http://www.espn.com/nba/salaries
import pandas as pd url = 'http://www.espn.com/nba/salaries' df = pd.DataFrame() # 创建一个空的DataFrame对象 # DataFrame添加数据 df = df.append(pd.read_html(url, header=0)) print(df) # 保存成CSV文件 df.to_csv('../data/nba_salaries.csv', index=False)
RK NAME TEAM SALARY 0 1 Stephen Curry, PG Golden State Warriors $48,070,014 1 2 Russell Westbrook, PG Los Angeles Lakers $47,063,478 ... 10 RK NAME TEAM SALARY ... 21 RK NAME TEAM SALARY ... 32 RK NAME TEAM SALARY ... 41 39 Gordon Hayward, SF Charlotte Hornets $30,075,000 42 40 Jaren Jackson Jr., PF Memphis Grizzlies $28,946,605
4.1 补充
在读取HTML网页时,当使用F12(或鼠标右键,点击检查)查看网页源代码时,具有table标签时,才可以读取,如下图所示: