🙋 哈喽大家好,本次是python数据分析、挖掘与可视化专栏第五期
⭐本期内容:Pandas数据载入
🏆系列专栏:Python数据分析、挖掘与可视化
👍“总有一段时光悄悄过去然后永远怀念.”
文章目录
- 前言
- 一、数据载入
- 1.文本文件读取
- 2. read_table和read_csv常用参数及其说明
- 3.使用read _csv 函数读取CSV文件。。
- 4.文本文件的存储
- 5.Excel文件的读取
- 6. Pandas读写Excel文件
- 7.读取excel文件
- 8.Excel文件的存储
- 二、合并数据
- 1.merge数据合并
- 1.1. merge方法主要参数及说明
- 1.2. merge的默认合并数据
- 1.3指定合并时的列名
- 1.4.merge合并方式、inner内连接、返回交集
- 2. concat数据连接
- 2.1.两个Series 的数据连接
- 2.2两个DataFrame的数据
- 2.3指定索引顺序
- 3.combine_first合并数据
- 总结
前言
对于数据分析而言,数据大部分来源于外部数据,如常用的CSV文件、Excel文件和数据库文件等。Pandas库将外部数据转换为DataFrame数据格式,处理完成后再存储到相应的外部文件中。
Pandas 常用的导入格式:import pandas as pd
一、数据载入
1.文本文件读取
文本文件是一种由若干行字符构成的计算机文件,它是一种典型的顺序文件。
txt文件
:是Windows操作系统上附带的一种文本格式,文件以.txt为后缀。
Pandas中使用read_table来读取文本文件:
pandas.read_table(filepath_or_buffer, sep=’\t’, header=’infer’, names=None, index_col=None, dtype=None, engine=None, nrows=None)
CSV文件
:是Comma-Separated Values的缩写,用半角逗号(’,’)作为字段值的分隔符。
Pandas中使用read_csv函数来读取CSV文件:
pandas.read_csv(filepath_or_buffer, sep=’,’, header=’infer’, names=None, index_col=None, dtype=None, engine=None, nrows=None)
2. read_table和read_csv常用参数及其说明
参数名称 | 说明 |
---|---|
filepath | 接收string,代表文件路径,无默认 |
sep | 接收string,代表分隔符。read_csv默认为“,”,read_table默认为制表符“\t”,如果分隔符指定错误,在读取数据的时候,每一行数据将连成一片 |
header | 接收int或sequence,表示将某行数据作为列名,默认为infer,表示自动识别 |
names | 接收array,表示列名,默认为None |
index_col | 接收int、sequence或False,表示索引列的位置,取值为sequence则代表多重索引,默认为None |
dtypel | 接收dict,代表写入的数据类型(列名为key,数据格式为values),默认为None |
engine | 接收c或者python,代表数据解析引擎,默认为c |
nrows | 接收int,表示读取前n行,默认为None |
3.使用read _csv 函数读取CSV文件。。
代码如下(示例):
dfl = pd. read_ _csv (‘文件路径文件名’)。
#读取CSV文件到DataFrame中.
df2= pd. read_ _able (‘文件路径文件名’, sep=',')。
#使用read_ table,并指定分隔符
df3= pd. read _csv (‘文件路径文件名’,names=['a','b,--]) 。
#文件不包含表头行,允许自动分配默认列名,也可以指定列名。
name:表示数据读进来之后的数据列的列名
4.文本文件的存储
文本文件的存储和读取类似,结构化数据可以通过pandas中的to_csv函数实现以CSV文件格式存储文件。
DataFrame.to_csv(path_or_buf = None, sep = ’,’, na_rep, columns=None, header=True, index=True, index_label=None, mode=’w’, encoding=None)
5.Excel文件的读取
Pandas提供了read_excel函数读取“xls”和“xlsx”两种excel文件,其格式为:
pandas.read_excel(io, sheetname, header=0, index_col=None, names=None, dtype)
read_excel函数和read_table函数的部分参数相同。
6. Pandas读写Excel文件
参数名称 | 说明 |
---|---|
io | 接收string,表示文件路径,无默认 |
sheetname | 接收string、int,代表excel表内数据的分表位置,默认为0 |
header | 接收int或sequence,表示将某行数据作为列名,默认为infer,表示自动识别 |
names | 接收int、sequence或者False,表示索引列的位置,取值为sequence则代表多重索引,默认为None |
index_col | 接收int、sequence或False,表示索引列的位置,取值为sequence则代表多重索引,默认为None |
dtypel | 接收dict,代表写入的数据类型(列名为key,数据格式为values),默认为None |
7.读取excel文件
xIsx = pd.excelFile('example/ex1 .xlsx')
pd.read_excel(xlsx, 'Sheetl')
#也可以直接利用:
frame= pd.read_ _excel('example/ex1.xlsx', 'Sheet1')
8.Excel文件的存储
将文件存储为Excel文件,可使用to_excel方法。其语法格式如下:
DataFrame.to_excel(excel_writer=None, sheetname=None’, na_rep=”, header=True, index=True, index_label=None, mode=’w’, encoding=None)
与 to_csv方法的常用参数基本一致,区别之处在于指定存储文件的文件路径参数excel_writer,增加了一个sheetnames参数,用来指定存储的Excel sheet的名称,默认为sheet1。
二、合并数据
在实际的数据分析中,对同一分析对象,可能有不同的数据来源,因此,需要对数据进行合并处理。
1.merge数据合并
· merge·函数是通过一个或多个键将两个DataFrame按行合并起来,Pandas中的数据合并merge( )函数格式如下:
merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)
1.1. merge方法主要参数及说明
参数 | 使用说明 |
---|---|
left | 参与合并的左侧DataFrame |
right | 参与合并的右侧DataFrame |
how | 连接方法:inner,left,right,outer(交、左、右、并) |
on | 用于连接的列名(默认为相同的列名) |
left_on | 左侧DataFrame中用于连接键的列 |
right_on | 右侧DataFrame中用于连接键的列 |
left_index | 左侧DataFrame中行索引作为连接键 |
right_index | 右侧DataFrame中行索引作为连接键 |
sort | 合并后会对数据排序,默认为True |
suffixes | 修改重复名 |
1.2. merge的默认合并数据
price = pd.DataFrame( {'fruit':['apple','grape','orange','orange'],'price':[8,7,9,11]})
amount = pd.DataFrame( {'fruit':['aple','grape','orange'],'amout':[5,11,8]})
display(price,amount,pd.merge(price,amount))
两个DataFrame都有fruit列,所以默认按照该列进行合并,默认how=‘inner’,即pd.merge(amount,price,on=‘fruit’ ,how=‘inner’)如果两个DataFrame的列名不相同,可以单独指定。
1.3指定合并时的列名
display(pd.merge(price,amount,left_on = 'fruit',right_on = 'fruit'))
merge合并时默认是内连接(inner),即返回交集。通过how参数可以选择连接方法:左连接(left),右连接(right)和外连接(outer)。
1.4.merge合并方式、inner内连接、返回交集
过多个键合并
left = pd.DataFrame({'key1':['one','one','two'],'key2':['a','b','a'],'value1':range(3)})
right = pd.DataFrame({'key1':['one','one','two','two'],'key2':['a','a','a','b'],'value2':range(4)})
display(left,right,pd.merge(left,right,on = ['key1','key2'],how = 'left'))
在合并时会出现重复列名,虽然可以人为进行重复列名的修改,但merge函数提供了suffixes用于处理该问题。
print(pd.merge(left,right,on = 'key1’))
print(pd.merge(left,right,on = 'key1',suffixes = ('_left','_right')))
2. concat数据连接
如果要合并的DataFrame之间没有连接键,就无法使用merge方法。
pandas中的concat方法可以实现,默认情况下会按行的方向堆叠数据。如果在列向上连接设置axies = 1即可。
2.1.两个Series 的数据连接
s1 = pd.Series([0,1],index = ['a','b'])
s2 = pd.Series([2,3,4],index = ['a','d','e'])
s3 = pd.Series([5,6],index = ['f','g'])
print(pd.concat([s1,s2,s3]))
2.2两个DataFrame的数据
datal = pd.DataFrame(np.arange(6).reshape(2,3),columns = lit('abc'))
data2 = pd.DataFrame(np.arange(20,26).reshape(2,3),columns = list('ayz'))
data = pd.concat([data1,data2],axis = 0)
display(datal ,data2,data)
在这里插入图片描述
可以看出,contact连接方式默认为outer外连接通过join参数,
可以指定连接方式:inner or outer直接contact之后,index只是重复;
使用data = data.reset_index(drop=True)来改变index,修改为默认序列
2.3指定索引顺序
s1 = pd.Series([0,1],index = ['a','b'])
s2 = pd.Series([2,3,4],index = ['a','d','e'])
s3 = pd.Series([5,6],index = ['f','g'])
s4 = pd.concat([s1*5,s3],sort=False)
s5 = pd.concat([s1 ,s4],axis =1,sort=False)
s6 = pd.concat([s1 ,s4],axis =1,join = 'inner',sort=False)
display(s4,s5,s6)
3.combine_first合并数据
在处理数据的过程中,当一个DataFrame对象中出现了缺失数据,而对于这些缺失数据,我们希望可以使用其他DataFrame对象中的数据填充,此时需要使用combine_first方法。
combine_first()方法的语法格式: combine_first(other)
上述方法中只有一个参数other,该参数用于接收填充缺失值的DataFrame对象。
总结
以上就是今天的学习内容啦~
如果有兴趣的话可以订阅专栏,持续更新呢~
咱们下期再见~