【python数据分析】Pandas数据载入

本文介绍了Pandas库在Python中用于数据读取和合并的方法,包括读取CSV和Excel文件,以及merge和concat函数在数据连接和合并中的应用。详细阐述了read_csv、read_excel函数的参数和使用,以及merge的连接方式,如内连接、外连接等。
摘要由CSDN通过智能技术生成

在这里插入图片描述

🙋‍ 哈喽大家好,本次是python数据分析、挖掘与可视化专栏第五期
⭐本期内容:Pandas数据载入
🏆系列专栏:Python数据分析、挖掘与可视化
👍“总有一段时光悄悄过去然后永远怀念.”



前言

对于数据分析而言,数据大部分来源于外部数据,如常用的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内连接、返回交集

### 1.5.merge通
过多个键合并

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对象。
在这里插入图片描述

总结

以上就是今天的学习内容啦~
如果有兴趣的话可以订阅专栏,持续更新呢~
咱们下期再见~
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

颜颜yan_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值