pandas导入外部数据

pandas导入外部数据

1
2
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)

1. 导入.XLS或.xlsx文件

1
2
3
4
pd.read_excel(io,sheet_name=0,header=0,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,date_parser=None,thousands=None,comment=None,
skipfooter=0,convert_float=True,mangle_dupe_cols=True,**kwds)

io:文件路径或类文件对象;

sheet_name: 通过字符串\整数\字符串列表\整数列表来索引单个或多个工作表。默认值为0;

header: 制定作为列名的行,默认值为0,即第一行为列名,根据实际表头来确定header;

names:默认值为None,要使用的列名列表;

idex_col:指定列为索引列,默认值为None,索引0是DataFrame的行标签;

usecols: 可以是int\list列表\字符串,默认值为None。导入指定列;

squeeze:布尔值,默认值为None,如果解析的数据只包含一列,则返回一个series;

dtype:列的数据类型名称或字典,默认值为None。(不懂)

skiprows:省略指定行数的数据,从第一行开始;

skipfooter:省略指定行数的数据,从最后一行开始。

1.1. 导入工作表(不指定工作表,则默认第一个)

1
2
3
df = pd.read_excel('F:/project2_pandas/Python数据分析从入门到精通/MR/Code/03/12/1月.xlsx')
df1= df.head()
print(df1)

1.2. 导入指定工作表

1
2
3
4
5
df = pd.read_excel('F:/project2_pandas/Python数据分析从入门到精通/MR/Code/03/12/1月.xlsx',sheet_name='莫寒')
df.head()

df = pd.read_excel('F:/project2_pandas/Python数据分析从入门到精通/MR/Code/03/12/1月.xlsx',sheet_name='莫寒',names='联系手机')
df.head()

1.2.1 为表格指定行索引

1
2
df = pd.read_excel('F:/project2_pandas/Python数据分析从入门到精通/MR/Code/03/12/1月.xlsx',index_col=0)
df.head()

1.2.2 设置列索引

1
2
3
# 设置第一行为列索引
df = pd.read_excel('F:/project2_pandas/Python数据分析从入门到精通/MR/Code/03/12/1月.xlsx',index_col=0, header=0)
df.head()

1.2.3 列索引为默认数字

1
2
df1 = pd.read_excel('F:/project2_pandas/Python数据分析从入门到精通/MR/Code/03/12/1月.xlsx',header=None)
df1.head()

1.3. 导入指定列数据

1
2
3
4
5
6
7
df = pd.read_excel('F:/project2_pandas/Python数据分析从入门到精通/MR/Code/03/12/1月.xlsx',usecols=[0])
df1 = pd.read_excel('F:/project2_pandas/Python数据分析从入门到精通/MR/Code/03/12/1月.xlsx', usecols=[0,3])
df2 = pd.read_excel('F:/project2_pandas/Python数据分析从入门到精通/MR/Code/03/12/1月.xlsx', usecols=['买家会员名','收货人姓名'])

print(df.head())
print(df1.head())
print(df2.head())

2. 导入.csv文件

1
2
3
4
5
6
7
pd.read_csv(filepath_or_buffer="xxx",sep=',',delimiter=None,header='infer',names=None, index_col=None,
usecols=None, squeeze = False, prefix=None, mangle_dupe_cols=True, dtype=None, engine=None, converters=None,
true_values=None, false_values=None, skipinitialspace=False, skiprows=None, nrows=None, na_values=None,
keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False,
infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, iterator=False,
chunksize=None, compression='infer', thousands=None, decimal=b'.', lineterminator=None,
quotechar="", quoting=0, escapechar=None, comment=None, encoding=None)

常用参数说明:
filepath_or_buffer: 字符串,文件路径或者URL链接;

sep\delimiter: 字符串、分隔符;

header:见第一节;

names:见第一节;

index_col:见第一节;

usecols:见第一节;

dtype:见第一节;

parse_dates: 通过该参数将某列直接转换为datetime64日期类型。

encoding:编码。

1
2
df = pd.read_csv('F:/project2_pandas/Python数据分析从入门到精通/MR/Code/03/16/1月.csv',encoding='gbk')
df.head()

3. 导入.txt文件

同样使用pd.read_csv()函数来读取,不同的是,必须指定分隔符。

1
2
df = pd.read_csv('F:/project2_pandas/Python数据分析从入门到精通/MR/Code/03/17/1月.txt',sep='\t', encoding='gbk')
df.head()

4. 导入HTML网页

1
2
3
pd.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网址,可以去掉s,如http://www.baidu.com;

match: 正则表达式,返回与正则表达式匹配的表格;

flavor: 解析器默认为lxml;

header: 确定列标题所在行;

index_col: 指定行索引;

encoding: 编码方式。

ps:使用pd.read_html(),首先要检查网页表格是否为table类型,或者含有<table>····</table>的字样

1
2
3
4
5
6
7
8
9
10
11
12
df = pd.DataFrame()
url_list = ['http://www.espn.com/nba/salaries/_/seasontype/4']
for i in range(2,13):
url = 'http://www.espn.com/nba/salaries/_/page/%s/seasontype/4'%i
url_list.append(url)
# 遍历网页中的table读取网页表格数据
for url in url_list:
df = df.append(pd.read_html(url), ignore_index=True)
# 列表解析:遍历dataframe第三列,以字符串$开头
df = df[[x.startswith('$') for x in df[3]]]
# 导出为csv文件
df.to_csv('F: / project2_pandas/Python数据分析从入门到精通/NBA.csv', header=['RK','NAME','TEAM','SALARY'],index=False)

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!