Python之Pandas读写文件及索引操作

这篇具有很好参考价值的文章主要介绍了Python之Pandas读写文件及索引操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

当使用Pandas做数据分析时,需要读取事先准备好的数据集,这是做数据分析的第一步。Panda提供了多种读取数据的方法:

  • read_csv()用于读取文本文件
  • read_json()用于读取json文件
  • read_sql_query()读取sql语句的

⛄CSV读写文件

CSV又称逗号分隔值文件,是一种简单的文件格式,以特定的结构来排列表格数据。 CSV文件能够以纯文本形式存储表格数据,比如电子表格、数据库文件,并具有数据交换的通用格式。CSV文件会在Excel文件中被打开,其行和列都定义了标准的数据格式。

将CSV中的数据转换为DataFrame对象是非常便捷的。和一般文件读写不一样,它不需要你做打开文件、读取文件、关闭文件等操作。相反,您只需要一行代码就可以完成上述所有步骤,并将数据存储在DataFrame中。

在Pandas中用于读取文本的函数有两个,分别是:read_csv()和read_table(),它们能够自动地将表格数据转换为DataFrame对象。

pandas.read_csv(filepath_or_buffer, sep=',', delimiter=None, header='infer',names=None, index_col=None, usecols=None)

# 新建txt文件,添加数据,另存为csv文件
ID,Name,Age,City,Salary
1,Jack,28,Beijing,22000
2,Lida,32,Shanghai,19000
3,John,43,Shenzhen,12000
4,Helen,38,Hengshui,3500

👀read_csv()

read_csv()表示从CSV文件中读取数据,并创建DataFrame对象。

import pandas as pd
#需要注意文件的路径
df = pd.read_csv(r"D:\Desktop\one.csv")
print(df)

# 输出结果
   ID   Name  Age      City  Salary
0   1   Jack   28   Beijing   22000
1   2   Lida   32  Shanghai   19000
2   3   John   43  Shenzhen   12000
3   4  Helen   38  Hengshui    3500

(1)自定义索引

在 CSV 文件中指定了一个列,然后使用index_col可以实现自定义索引。

import pandas as pd
df = pd.read_csv(r"D:\Desktop\one.csv",index_col=['ID'])
print(df)

# 输出结果
     Name  Age      City  Salary
ID                              
1    Jack   28   Beijing   22000
2    Lida   32  Shanghai   19000
3    John   43  Shenzhen   12000
4   Helen   38  Hengshui    3500

(2)查看每一列的dtype

import pandas as pd
import numpy as np
df1 = pd.read_csv(r"D:\Desktop\one.csv")
print(df1.dtypes)
print("*"*20)
# 转换salary为float类型
df2 = pd.read_csv(r"D:\Desktop\one.csv",dtype={'Salary':np.float64})
print(df2.dtypes)

# 输出结果
ID         int64
Name      object
Age        int64
City      object
Salary     int64
dtype: object
********************
ID          int64
Name       object
Age         int64
City       object
Salary    float64
dtype: object

(3)更改文件标头名

使用names参数可以指定头文件的名称。

import pandas as pd
df1 = pd.read_csv(r"D:\Desktop\one.csv",names=['a','b','c','d','e'])
print(df1)
print("*"*20)
# 文件标头名是附加的自定义名称,但是您会发现,原来的标头名(列标签名)并没有被删除,此时您可以使用`header`参数来删除它。
df2 = pd.read_csv(r"D:\Desktop\one.csv",names=['a','b','c','d','e'],header=0)
print(df2)

# 输出结果
    a      b    c         d       e
0  ID   Name  Age      City  Salary
1   1   Jack   28   Beijing   22000
2   2   Lida   32  Shanghai   19000
3   3   John   43  Shenzhen   12000
4   4  Helen   38  Hengshui    3500
********************
   a      b   c         d      e
0  1   Jack  28   Beijing  22000
1  2   Lida  32  Shanghai  19000
2  3   John  43  Shenzhen  12000
3  4  Helen  38  Hengshui   3500

(4)跳过指定的行数

skiprows参数表示跳过指定的行数。注意:包含标头所在行。

import pandas as pd
df = pd.read_csv(r"D:\Desktop\one.csv",skiprows=2)
print(df)

# 输出结果
   2   Lida  32  Shanghai  19000
0  3   John  43  Shenzhen  12000
1  4  Helen  38  Hengshui   3500

👀to_csv()

Pandas提供的to_csv()函数用于将DataFrame转换为CSV数据。如果想要把CSV数据写入文件,只需向函数传递一个文件对象即可。否则,CSV数据将以字符串格式返回。

import pandas as pd 
data = {'Name':['Smith','Parker'], 'ID':[101, 102], 'Language':['Py', 'JS']} 
info = pd.DataFrame(data) 
print('DataFrame Values:\n', info) 
print("*"*20)
# 转换为csv数据
csv_data = info.to_csv() 
print('CSV数据:\n', csv_data) 
# 指定CSV文件输出时的分隔符,并将其保存在pandas.csv文件中
csv_data = info.to_csv(r"D:\Desktop\two.csv",sep='|')

# 输出结果
DataFrame Values:
      Name   ID Language
0   Smith  101       Py
1  Parker  102       JS
********************
CSV数据:
 ,Name,ID,Language
0,Smith,101,Py
1,Parker,102,JS

⛄Excel读写操作

在数据量较少的情况下,Excel对于数据的处理、分析、可视化有其独特的优势,因此可以显著提升您的工作效率。但是,当数据量非常大时,Excel的劣势就暴露出来了,比如,操作重复、数据分析难等问题。Pandas提供了操作Excel文件的函数,可以很方便地处理Excel表格。

👀read_excel()

如果您想读取Excel表格中的数据,可以使用read_excel()方法,其语法格式如下:

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, nrows=None, na_values=None, parse_dates=False, date_parser=None, thousands=None, comment=None, skipfooter=0, convert_float=True, **kwds)

参数说明
io	表示Excel文件的存储路径。
sheet_name	要读取的工作表名称。
header	指定作为列名的行,默认0,即取第一行的值为列名;若数据不包含列名,则设定header=None。若将其设置为header=2,则表示将前两行作为多重索引。
names	一般适用于Excel缺少列名,或者需要重新定义列名的情况;names的长度必须等于Excel表格列的长度,否则会报错。
index_col	用做行索引的列,可以是工作表的列名称,如index_col='列名',也可以是整数或者列表。
usecols	intlist类型,默认为None,表示需要读取所有列。
squeeze	boolean,默认为False,如果解析的数据只包含一列,则返回一个Series。
converters	规定每一列的数据类型。
skiprows	接受一个列表,表示跳过指定行数的数据,从头部第一行开始。
nrows	需要读取的行数。
skipfooter	接受一个列表,省略指定行数的数据,从尾部最后一行开始。

读取操作xlsx文件:

import pandas as pd
# 读取excel数据
df1 = pd.read_excel(r"D:\Desktop\学习网站.xlsx")
print(df1)
print("*"*20)
df2 = pd.read_excel(r"D:\Desktop\学习网站.xlsx",index_col='name',skiprows=[2])
print(df2)
print("*"*20)
# 处理未命名列
df2.columns = df2.columns.str.replace('Unnamed.*', 'col_label')
print(df2)
print("*"*20)
# index_col选择前两列作为索引列,选择前三列数据
df3 = pd.read_excel(r"D:\Desktop\学习网站.xlsx",index_col=[0,1],usecols=[1,2,3])
print(df3)

# 输出结果
   Unnamed: 0      name  rank language                 url
0           0       编程帮     1      PHP   www.bianchneg.com
1           1    c语言中文网     2        C     c.bianchneg.net
2           2       微学苑     3      PHP  www.weixueyuan.com
3           3  92python     4   Python    www.92python.com
********************
          Unnamed: 0  rank language                 url
name                                                   
编程帮                0     1      PHP   www.bianchneg.com
微学苑                2     3      PHP  www.weixueyuan.com
92python           3     4   Python    www.92python.com
********************
          col_label  rank language                 url
name                                                  
编程帮               0     1      PHP   www.bianchneg.com
微学苑               2     3      PHP  www.weixueyuan.com
92python          3     4   Python    www.92python.com
********************
              language
name     rank         
编程帮      1         PHP
c语言中文网   2           C
微学苑      3         PHP
92python 4      Python

👀to_excel()

通过to_excel()函数可以将Dataframe中的数据写入到Excel文件。如果想要把单个对象写入Excel文件,那么必须指定目标文件名;如果想要写入到多张工作表中,则需要创建一个带有目标文件名的ExcelWriter对象,并通过sheet_name参数依次指定工作表的名称。

DataFrame.to_excel(excel_writer, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None, inf_rep='inf', verbose=True, freeze_panes=None)  

参数说明
excel_wirter	文件路径或者ExcelWrite对象。
sheet_name	指定要写入数据的工作表名称。
na_rep	缺失值的表示形式。
float_format	它是一个可选参数,用于格式化浮点数字符串。
columns	指要写入的列。
header	写出每一列的名称,如果给出的是字符串列表,则表示列的别名。
index	表示要写入的索引。
index_label	 引用索引列的列标签。如果未指定,且hearder和index均为True,则使用索引名称。如果DataFrame使用MultiIndex,则需要给出一个序列。
startrow	初始写入的行位置,默认值0。表示引用左上角的行单元格来储存DataFrame。
startcol	初始写入的列位置,默认值0。表示引用左上角的列单元格来储存DataFrame。
engine	它是一个可选参数,用于指定要使用的引擎,可以是openpyxl或xlsxwriter。

创建DataFrame数据,保存xlsx文件。

import pandas as pd
#创建DataFrame数据
info_website = pd.DataFrame({
'name': ['编程帮', 'c语言中文网', '微学苑', '92python'],
'rank': [1, 2, 3, 4],
'language': ['PHP', 'C', 'PHP','Python' ],
'url': ['www.bianchneg.com','c.bianchneg.net','www.weixueyuan.com','www.92python.com']})
# 创建ExcelWrite对象
writer = pd.ExcelWriter(r"D:\Desktop\学习网站.xlsx")
info_website.to_excel(writer)
writer.save()
print('输出成功')

⛄index操作索引

索引(index)是Pandas的重要工具,通过索引可以从DataFame中选择特定的行数和列数,这种选择数据的方式称为“子集选择”。在Pandas中,索引值也被称为标签(label),它在 Jupyter 笔记本中以粗体字进行显示。索引可以加快数据访问的速度,它就好比数据的书签,通过它可以实现数据的快速查找。

(1)创建索引

import pandas as pd    
data1 = pd.read_csv(r"D:\Desktop\one.csv") 
print(data1)
print("*"*20)
#设置"Name"为行索引    
data2 = pd.read_csv(r"D:\Desktop\one.csv", index_col ="Name")   
# 通过列标签选取多列数据  
a1 = data2[["City","Salary"]]
print(a1)
print("*"*20)
# 获取单列数据,或者以列表的形式传入["Salary"] 
a2 = data2["Salary"]
print(a2)

# 输出结果
   ID   Name  Age      City  Salary
0   1   Jack   28   Beijing   22000
1   2   Lida   32  Shanghai   19000
2   3   John   43  Shenzhen   12000
3   4  Helen   38  Hengshui    3500
********************
           City  Salary
Name                   
Jack    Beijing   22000
Lida   Shanghai   19000
John   Shenzhen   12000
Helen  Hengshui    3500
********************
Name
Jack     22000
Lida     19000
John     12000
Helen     3500
Name: Salary, dtype: int64

(2)设置索引

set_index()将已存在的列标签设置为DataFrame行索引。除了可以添加索引外,也可以替换已经存在的索引。比如您也可以把Series或者一个DataFrme设置成另一个DataFrame的索引。

import pandas as pd  
info = pd.DataFrame({'Name':['Parker','Terry','Smith','William'], 
                     'Year':[2011,2009,2014,2010],
                     'Leaves': [10,15,9,4]})
print(info)
print("*"*20)
# 设置Name为行索引
print(info.set_index('Name'))

# 输出结果
      Name  Year  Leaves
0   Parker  2011      10
1    Terry  2009      15
2    Smith  2014       9
3  William  2010       4
********************
         Year  Leaves
Name                 
Parker   2011      10
Terry    2009      15
Smith    2014       9
William  2010       4

(3)重置索引

使用reset_index()来恢复初始行索引

import pandas as pd
import numpy as np
info = pd.DataFrame([('William', 'C'), ('Smith', 'Java'), ('Parker', 'Python'), ('Phill', np.nan)], index=[1, 2, 3, 4], columns=('name', 'Language')) 
print(info)
print("*"*20)
print(info.reset_index())

# 输出结果
      name Language
1  William        C
2    Smith     Java
3   Parker   Python
4    Phill      NaN
********************
   index     name Language
0      1  William        C
1      2    Smith     Java
2      3   Parker   Python
3      4    Phill      NaN

⛄Pandas分层索引

分层索引(Multiple Index)是Pandas中非常重要的索引类型,它指的是在一个轴上拥有多个(即两个以上)索引层数,这使得我们可以用低维度的结构来处理更高维的数据。比如,当想要处理三维及以上的高维数据时,就需要用到分层索引。

分层索引的目的是用低维度的结构(Series或者DataFrame)更好地处理高维数据。通过分层索引,我们可以像处理二维数据一样,处理三维及以上的数据。分层索引的存在使得分析高维数据变得简单,让抽象的高维数据变得容易理解,同时它比废弃的Panel结构更容易使用。

Pandas可以通过MultiIndex()方法来创建分层索引对象,该对象本质上是一个元组序列,序列中每一个元组都是唯一的。

⛄Pandas执行SQL操作

如果想要从SQL数据库读取数据,首先您应该使用Python和数据库建立连接,然后将查询语句传递给read_sql_query()方法。

import pandas as pd
import sqlite3
# 建立数据连接
con = sqlite3.connect("database.db")
# 数据库读取数据,在SQLite数据库中创建一张信息表,您可以随意添加一些信息
# con参数指定操作数据库的引擎,可以指定,也可默认
df = pd.read_sql_query("SELECT * FROM information",con)  

SELECT查询语句使用,把要查询的每个字段分开,当然您也可以使用*来选择所有的字段。

WHERE子句完成条件查询。

GroupBy分组操作。

LIMIT语句主要起到限制作用,比如查询前n行记录。

参考资料:菜鸟教程
笔者不才,请多交流!!!

欢迎大家关注预览我的博客Blog:HeartLoveLife
能力有限,敬请谅解!!文章来源地址https://www.toymoban.com/news/detail-754093.html

到了这里,关于Python之Pandas读写文件及索引操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python中Pandas之DataFrame索引、选取数据

    总结一下 DataFrame 索引问题 先创建一个简单的 DataFrame 。 DataFrame 中有两种索引: 行索引( index ):对应最左边那一竖列 列索引( columns ):对应最上面那一横行 两种索引默认均为从 0 开始的自增整数。 可以使用 index 这个参数指定行索引, columns 这个参数指定列索引。 输出此时

    2023年04月08日
    浏览(51)
  • 100天精通Python(数据分析篇)——第56天:Pandas读写txt和csv文件(read_csv、to_csv参数说明+代码实战)

    文本文件,主要包括csv和txt两种等,相应接口为 read_csv() 和 to_csv(),分别用于读写数

    2023年04月08日
    浏览(59)
  • 【Python】数据分析+数据挖掘——探索Pandas中的索引与数据组织

    在数据科学和数据分析领域,Pandas是一个备受喜爱的Python库。它提供了丰富的数据结构和灵活的工具,帮助我们高效地处理和分析数据。其中,索引在Pandas中扮演着关键角色,它是一种强大的数据组织和访问机制,使我们能够更好地理解和操作数据。 本博客将探讨Pandas中与索

    2024年02月15日
    浏览(58)
  • 初学python系列: pandas操作excel

    媳妇工作中经常用到excel处理,想用python处理excel更高效,所以自学了python,觉得python比Java还是简单多了,没有变量类型声明,比Java也就多了元组,各种库很丰富。 需求是: 汇总两个excel中 列,放到一个新的excel中,不允许有重复的列内容 代码编辑器:pycharm社区版本(根本

    2024年01月22日
    浏览(52)
  • Python中Pandas库的相关操作

      目录 Pandas库 常用操作 创建DataFrame 查看数据 数据选择和过滤 数据排序和排名 缺失数据处理 数据聚合和分组 数据的合并和连接 Pandas是Python中常用的数据处理和分析库,它提供了高效、灵活且易于使用的数据结构和数据分析工具。 1.Series(序列):Series是Pandas库中的一维标

    2024年02月04日
    浏览(33)
  • python学习——pandas库的使用之series及DataFrame创建、查看、切片、运算

    Pandas是基于NumPy的数据分析模块 Pandas纳入了大量库和一些标准的数据模型,提供了高效操作大型数据集所需的工具 Pandas提供了大量能使我们快速便捷处理数据的函数和方法 Pandas的数据结构 Series :带标签的一维数组,与Numpy中的一维array类似。与列表也很相近。 区别是:列表

    2024年02月03日
    浏览(52)
  • Python 应知应会的Pandas高级操作

    实际业务需求往往需要按照一定的条件甚至复杂的组合条件来查询数据,接下来为大家介绍如何发挥Pandas数据筛选的无限可能,随心所欲地取用数据。 1、逻辑运算 2、逻辑筛选数据 切片([ ])、.loc[ ]和.iloc[ ]均支持上文所介绍的逻辑表达式。 以下是切片([ ])的逻辑筛选示例

    2024年04月10日
    浏览(41)
  • Python之如何使用pandas操作Excel表

    目录 1、前言 2、读取Excel 3、对Excel进行操作 3.1、获取行号、列名  3.2、获取单元格的值,并循环输出  3.3、对空值进行处理,替换  3.4、增加一列,并对新增列的第一行进行赋值 3.5、将修改后数据保存到原文档  3.6、关于循环取数 4、错误处理 5、全部代码 1、前言 网上也有

    2023年04月09日
    浏览(55)
  • 【Python】Pandas Groupby操作的25个示例

    在日常的数据分析中,经常需要将数据根据某个(多个)字段划分为不同的群体(group)进行分析,如电商领域将全国的总销售额根据省份进行划分,分析各省销售额的变化情况,社交领域将用户根据画像(性别、年龄)进行细分,研究用户的使用情况和偏好等。在Pandas中,

    2024年02月03日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包