python:pandas(1)

本文介绍了Python的Pandas库,包括如何读取txt、csv、excel文件,解析参数如sep、header、names等。还讨论了Pandas的DataFrame和Series数据结构,以及read_sql、connect、drop等函数的使用。Pandas在数据处理和分析方面表现出色,尤其适合处理表格和混杂数据。
摘要由CSDN通过智能技术生成

作为 Python 语言的一个第三方库,Pandas 在程序中可以很方便的进行引用。但是不得不说的是。Pandas 是在 Python 的另一个科学计算库 Numpy 的基础上进行开发的,因此 Pandas 采用了大量的 Numpy 编码风格。
但它在性能上要优于 Numpy,Numpy 比较适合处理统一的数值数组数据,而 Pandas 主要提供了两种数据结构:一维数组(Series)和二维数组(DataFrame),可以说是专门用来处理表格和混杂数据的工具。

  • pandas读取数据

读取txt数据文件

首先自建一个记事本文件。
在这里插入图片描述TXT 文件是一种文本文件,里面存储的数据格式每一行表示行数据,列数据则是通过某种分隔符对一行的数据进行拆分的。
我们新建了一个记事本文件命名为: pandasDataDemo.txt ,里面添加了一些人工智能相关的书名、作者名、出版日期和书的价格,这里我们使用的是 “,” 分割符进行分割列数据的。

read_csv () 函数为 Pandas 读取 txt、csv 数据文件提供了强力的支持,该函数含有四五十个参数,默认是 从文件、URL、文件新对象中加载带有分隔符的数据,默认分隔符是逗号。下面我们列举出它最常用的几个参数。
filepath_or_buffer 可以是 url,类型包括(http, ftp, s3 和文件),比如上面我们 pandasDataDemo.txt 文件的位置为:
C:\Users\13965\Documents\myFuture\IMOOC\pandasCourse-progress\data_source\pandasDataDemo.txt ,如果不指定类型,默认是 file
类型
sep 指定数据的分隔符,默认是 “,”
header 指定数据的从第几行解析,默认是文件数据的第 1 行,header=0,如果不用文件中的某行作为列名,要写上 header=None
names 指定列名,如 names=[‘A’,‘B’,‘C’,‘D’,‘E’]
nrows 指定数据文件中读取多少行的数据,从数据第一行开始
skiprows 指定忽略的行数,从数据文件头开始
skipfooter 指定忽略的行数,从文件的尾部开始(c 引擎不支持)
encoding 指定数据解析时,字符的集类型,通常指定为 “utf-8”
engine 指定数据分析的引擎,默认是 c,c 引擎虽然快但是 Python 引擎的功能更多。
na_filter 是否检查缺失值(空字符串或者是空值),当数据文件较大时,并且很少有缺失值,设置 na_filter=False 能有效的提升读取的速度

import pandas as pds
data_path = "C:/Users/Dell/Desktop/pandasDataDemo.txt"
data = pds.read_csv(data_path)
print(data)

如果报错:AttributeError: module ‘pandas’ has no attribute 'read_csv’说明你建了个pandas的文件(也可能是csv.py,excel.py之类的名字)重命名即可

             书名   作者  出版日期   价格
0  python从入门到实战  埃里克  2020   85
1    python数据分析  丹尼尔  2020   80
2    python爬虫技术   李宁  2020   79
3    疯狂python讲义   李刚  2019  113
4         大数据处理  石宣化  2018   43
5          人工智能  史蒂芬  2018   97
6          深度学习   伊恩  2017  152
7        人工智能算法  杰弗瑞  2020   53
8        人工智能简史   尼克  2017   24

我们将分隔符改成‘=’来测试sep参数:

import pandas as pds
data_path = "C:/Users/Dell/Desktop/pandasDataDemo.txt"
data = pds.read_csv(data_path, sep="=")
print(data)
             书名   作者  出版日期   价格
0  python从入门到实战  埃里克  2020   85
1    python数据分析  丹尼尔  2020   80
2    python爬虫技术   李宁  2020   79
3    疯狂python讲义   李刚  2019  113
4         大数据处理  石宣化  2018   43
5          人工智能  史蒂芬  2018   97
6          深度学习   伊恩  2017  152
7        人工智能算法  杰弗瑞  2020   53
8        人工智能简史   尼克  2017   24

测试参数header:

import pandas as pds
data_path = "C:/Users/Dell/Desktop/pandasDataDemo.txt"
#这里header=3从第四行开始解析
# 因为 Pandas 解析数据的行数是从 0 下标开始的,并且将第 4 行默认作为列索引的值。
data = pds.read_csv(data_path, sep="=", header=3)
print(data)
   python爬虫技术   李宁  2020   79
0  疯狂python讲义   李刚  2019  113
1       大数据处理  石宣化  2018   43
2        人工智能  史蒂芬  2018   97
3        深度学习   伊恩  2017  152
4      人工智能算法  杰弗瑞  2020   53
5      人工智能简史   尼克  2017   24

如果不使用数据中的某行作为列名,要声明 header=None ,Pandas 会默认以数字编号为各列名称。

data = pds.read_csv(data_path, sep="=", header=None)
print(data)
              0    1     2    3
0            书名   作者  出版日期   价格
1  python从入门到实战  埃里克  2020   85
2    python数据分析  丹尼尔  2020   80
3    python爬虫技术   李宁  2020   79
4    疯狂python讲义   李刚  2019  113
5         大数据处理  石宣化  2018   43
6          人工智能  史蒂芬  2018   97
7          深度学习   伊恩  2017  152
8        人工智能算法  杰弗瑞  2020   53
9        人工智能简史   尼克  2017   24

测试参数names:

# 这里传入names,传入列的名称
data = pds.read_csv(data_path, sep="=", header=None, names=['AA','BB','CC','DD'])
print(data)
             AA   BB    CC   DD
0            书名   作者  出版日期   价格
1  python从入门到实战  埃里克  2020   85
2    python数据分析  丹尼尔  2020   80
3    python爬虫技术   李宁  2020   79
4    疯狂python讲义   李刚  2019  113
5         大数据处理  石宣化  2018   43
6          人工智能  史蒂芬  2018   97
7          深度学习   伊恩  2017  152
8        人工智能算法  杰弗瑞  2020   53
9        人工智能简史   尼克  2017   24

测试参数nrows:

# 这里传入nrows
data = pds.read_csv(data_path, sep="=", nrows=3, names=['AA','BB','CC','DD'])
print(data)
             AA   BB    CC  DD
0            书名   作者  出版日期  价格
1  python从入门到实战  埃里克  2020  85
2    python数据分析  丹尼尔  2020  80

可以看到这里的 3 行正是我们数据文件中的前三行数据。
测试参数skiprows:

# 这里传入skiprows,忽略多少行
data = pds.read_csv(data_path, sep="=", skiprows=5)
print(data)
    大数据处理  石宣化  2018   43
0    人工智能  史蒂芬  2018   97
1    深度学习   伊恩  2017  152
2  人工智能算法  杰弗瑞  2020   53
3  人工智能简史   尼克  2017   24

这里可以看到数据在忽略了 5 行之后,将第 6 行数据解析为列名称,继续向下进行数据的解析。
测试参数skipfooter,encoding,engine:

data = pds.read_csv(data_path, sep="=", skipfooter=7, engine='python', encoding='utf-8')
print(data)
             书名   作者  出版日期  价格
0  python从入门到实战  埃里克  2020  85
1    python数据分析  丹尼尔  2020  80

只输入skipfooter这里可以看到输出结果存在的问题,首先根据提示可以看出是 c 引擎不支持 skipfooter 的解析;其实是存在中文乱码的问题,为了解决这两个问题,我们通过 encoding 和 engine 分别制定编码方式和引擎类型。
这里我们通过指定编码 encoding=‘utf-8’ 和解析引擎 engine=‘python’ ,可以看到修复了上面存在的问题,并且看到结果是忽略了数据的后 7 行,只解析了前 3 行数据。

Tips:所谓引擎,最通俗的理解就是动力的来源,我们这里提到的 C 引擎和 Python 引擎,主要是指在 Pandas 解析数据时,解析函数最底层主要运行程序的编写语言,在使用这两个解析器引擎时,C 引擎的速度更快,但是 Python 引擎的功能更多更齐全。

测试参数na_filter:
首先我们将源数据最后两行的作者这一列删掉内容
在这里插入图片描述

针对缺失值,read_csv () 函数默认是将缺失值解析后,展示为 NaN ,这里我们看一下解析出来的数据结果:

data = pds.read_csv(data_path, sep="=", engine='python', encoding='utf-8')
print(data)
             书名   作者  出版日期   价格
0  python从入门到实战  埃里克  2020   85
1    python数据分析  丹尼尔  2020   80
2    python爬虫技术   李宁  2020   79
3    疯狂python讲义   李刚  2019  113
4         大数据处理  石宣化  2018   43
5          人工智能  史蒂芬  2018   97
6          深度学习   伊恩  2017  152
7        人工智能算法  NaN  2020   53
8        人工智能简史  NaN  2017   24
data = pds.read_csv(data_path, sep="=", na_filter=False, engine='python', encoding='utf-8')
print(data)
             书名   作者  出版日期   价格
0  python从入门到实战  埃里克  2020   85
1    python数据分析  丹尼尔  2020   80
2    python爬虫技术   李宁  2020   79
3    疯狂python讲义   李刚  2019  113
4         大数据处理  石宣化  2018   43
5          人工智能  史蒂芬  2018   97
6          深度学习   伊恩  2017  152
7        人工智能算法       2020   53
8        人工智能简史       2017   24

这里可以看到,通过 na_filter=False 参数指定后,read_csv () 函数将不对缺失值进行解析。

读取csv数据文件

CSV 即 Comma Separate Values 是逗号分隔文件的缩写,它是一种用来存储数据的纯文本文件,每一栏的数据是通过 “,” 进行分割的,每一行数据都以回车符结束。csv 文件的创建方式有两种:第一种是通过新建记事本,填写好每行以 “,” 分列,回车结尾的数据保存后,将记事本的后缀名改为 .csv 即可;第二种是通过 Excel 创建 CSV 文件。用Excel时要另存为CSV文件。

import pandas as pds
data_path = "C:/Users/Dell/Desktop/Demo.csv"
data = pds.read_csv(data_path)
print(data)
     编程语言  推出时间  创始人
0    Java  1995  111
1  python  1991  222
2       c  1927  333
3      js  1995  444
4     php  2012  555
5     c++  1983  666
读取excel数据文件

xcel 是我们比较常见的办公文件之一,经常用于数据的整理、分析和可视化方面的工作,具有行和列的数据格式,自身含有大量的数据处理和分析函数,但是如果我们 Excel 的数据量比较大,他在数据的处理上就会很慢,甚至有打不开的情况发生,而 Pandas 不仅功能分析上比较强大,在速度上也远远优于 Excel 的处理。下面将具体看一下 Pandas 是如何读取 Excel 数据的,首先我们先创建一个 Excel 数据文件: excel 数据 demo.xlsx:
在这里插入图片描述

Pandas 提供了 read_excel () 函数用于 Excel 数据文件的读取,并为其提供了很多的参数用于解析 Excel 数据的设置,接下来我们列举一些该函数中常用的几个参数设置:
io 传入 execl 文件的对象,字符串可能是一个 URL 包括的类型(http,ftp,s3 和文件)
sheet_name 指定读取第几个 sheet 表,默认是第一个,sheet_name=None 可以读取所有的 sheet
header 指定哪一行作为列名,如果不需要里面的行作为列名,要写上 header = None
names 指定列名,如 names=[‘A’,‘B’,‘C’,‘D’,‘E’]

测试参数io:

import pandas as pds
data_path = "C:/Users/Dell/Desktop/demo.xlsx"
data = pds.read_excel(data_path)
print(data)
     编程语言  推出时间  创始人
0    Java  1995  111
1  python  1991  222
2       c  1927  333
3      js  1995  444
4     php  2012  555
5     c++  1983  666

测试参数sheet_name:
该参数用于设置读取 Excel 数据中的哪个工作表,值为工作表名称,首先我们在 “execl 数据 demo.xlsx” 文件中新增一个工作表 Sheet2 。在这里插入图片描述

import pandas as pds
data_path = "C:/Users/Dell/Desktop/demo.xlsx"
data = pds.read_excel(data_path,sheet_name='Sheet2')
print(data)
     编程语言2  推出时间  创始人
0    Java2  1995  111
1  python2  1991  222
2       c2  1927  333
3      js2  1995  444
4     php2  2012  555
5     c++2  1983  666
import pandas as pds
data_path = "C:/Users/Dell/Desktop/demo.xlsx"
# sheet_name=None解析所有的工作表
data = pds.read_excel(data_path,sheet_name=None)
print(data)
{
   'Sheet1':      编程语言  推出时间  创始人
0    Java  1995  111
1  python  1991  222
2       c  1927  333
3      js  1995  444
4     php  2012  555
5     c++  1983  666, 'Sheet2':      编程语言2  推出时间  创始人
0    Java2  1995  111
1  python2  1991  222
2       c2  1927  333
3      js2  1995  444
4     php2  2012  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值