首页 > 其他分享 >【7.0】Pandas csv读写文件

【7.0】Pandas csv读写文件

时间:2023-09-24 17:03:20浏览次数:40  
标签:文件 None read df 7.0 pd csv Pandas

【一】Python Pandas读取文件

  • 当使用 Pandas 做数据分析的时,需要读取事先准备好的数据集,这是做数据分析的第一步。

  • Panda 提供了多种读取数据的方法:

    • read_csv() 用于读取文本文件

    • read_json() 用于读取 json 文件

    • read_sql_query() 读取 sql 语句的,

【1】CSV文件读取

  • CSV 又称逗号分隔值文件,是一种简单的文件格式,以特定的结构来排列表格数据。
    • CSV 文件能够以纯文本形式存储表格数据,比如电子表格、数据库文件,并具有数据交换的通用格式。
    • CSV 文件会在 Excel 文件中被打开,其行和列都定义了标准的数据格式。
  • 将 CSV 中的数据转换为 DataFrame 对象是非常便捷的。
    • 和一般文件读写不一样,它不需要你做打开文件、读取文件、关闭文件等操作。
    • 相反,您只需要一行代码就可以完成上述所有步骤,并将数据存储在 DataFrame 中。
  • 下面进行实例演示,首先您需要创建一组数据,并将其保存为 CSV 格式,数据如下:
Name,Hire Date,Salary,Leaves Remaining 
John Idle,08/15/14,50000.00,10 
Smith Gilliam,04/07/15,65000.00,6 
Parker Chapman,02/21/14,45000.00,7 
Jones Palin,10/14/13,70000.00,3 
Terry Gilliam,07/22/14,48000.00,9 
Michael Palin,06/28/13,66000.00,8  
  • 注意:将上述数据保存到.txt的文本文件中,然后将文件的扩展名后缀修改为 csv,即可完成 csv 文件的创建。
  • 接下来,我们使用下列代码读写数据:
import pandas  # 仅仅一行代码就完成了数据读取,但是注意文件路径不要写错

df = pandas.read_csv('test.csv')
print(df)
             Name Hire Date   Salary  Leaves Remaining
0       John Idle  08/15/14  50000.0                10
1   Smith Gilliam  04/07/15  65000.0                 6
2  Parker Chapman  02/21/14  45000.0                 7
3     Jones Palin  10/14/13  70000.0                 3
4   Terry Gilliam  07/22/14  48000.0                 9
5   Michael Palin  06/28/13  66000.0                 8
  • 在下一节会对 read_csv() 函数做详细讲解。

【2】json读取文件

  • 您可以通过下列方法来读取一个 json 文件,如下所示:
import pandas as pd

data = pd.read_json('C:/Users/Administrator/Desktop/hrd.json')
print(data)
             Name Hire Date   Salary  Leaves Remaining 
0       John Idle  08/15/14  50000.0                  10
1   Smith Gilliam  04/07/15  65000.0                   6
2  Parker Chapman  02/21/14  45000.0                   7
3     Jones Palin  10/14/13  70000.0                   3
4   Terry Gilliam  07/22/14  48000.0                   9
5   Michael Palin  06/28/13  66000.0                   8

【3】SQL数据库读取

  • 如果想要从 SQL 数据库读取数据,首先您应该使用 Python 和数据库建立连接,然后将查询语句传递给 read_sql_query() 方法,下面做简单地演示:

(1)安装pysqlite3模块

pip install pysqlite3

(2)建立数据连接

import sqlite3 

con = sqlite3.connect("database.db")  

(3)数据库读取数据

  • 在 SQLite 数据库中创建一张信息表,您可以随意添加一些信息,最后使用下列方法读取数据即可:
#con参数指定操作数据库的引擎,可以指定,也可默认
df = pd.read_sql_query("SELECT * FROM information",con)  

【二】Pandas csv读写文件

  • 我们知道,文件的读写操作属于计算机的 IO 操作,Pandas IO 操作提供了一些读取器函数,比如 pd.read_csv()、pd.read_json 等,它们都返回一个 Pandas 对象。

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

pandas.read_csv(filepath_or_buffer, sep=',', delimiter=None, header='infer',names=None, index_col=None, usecols=None)
  • 下面,新建一个 txt 文件,并添加以下数据
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
  • 将 txt 文件另存为 person.csv 文件格式,直接修改文件扩展名即可。
  • 接下来,对此文件进行操作。

【1】read_csv()

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

# 需要注意文件的路径
df = pd.read_csv("person.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("person.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

# 转换salary为float类型
df = pd.read_csv("person.csv", dtype={'Salary': np.float64})
print(df.dtypes)
ID          int64
Name       object
Age         int64
City       object
Salary    float64
dtype: object
  • 注意:默认情况下,Salary 列的 dtype 是 int 类型,但结果显示其为 float 类型,因为我们已经在上述代码中做了类型转换。

(3)更改文件标头名

  • 使用 names 参数可以指定头文件的名称。
import pandas as pd

df = pd.read_csv("person.csv", names=['a', 'b', 'c', 'd', 'e'])
print(df)
    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
  • 注意:文件标头名是附加的自定义名称,但是您会发现,原来的标头名(列标签名)并没有被删除,此时您可以使用header参数来删除它。

(4)通过传递标头所在行号实现删除

import pandas as pd

df = pd.read_csv("person.csv", names=['a', 'b', 'c', 'd', 'e'], header=0)
print(df)
   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
  • 假如原标头名并没有定义在第一行,您也可以传递相应的行号来删除它。

(5)跳过指定的行数

  • skiprows参数表示跳过指定的行数。
import pandas as pd

df = pd.read_csv("person.csv", skiprows=2)
print(df)
   2   Lida  32  Shanghai  19000
0  3   John  43  Shenzhen  12000
1  4  Helen  38  Hengshui   3500
  • 注意:包含标头所在行。

【2】to_csv()

  • Pandas 提供的 to_csv() 函数用于将 DataFrame 转换为 CSV 数据。
  • 如果想要把 CSV 数据写入文件,只需向函数传递一个文件对象即可。
  • 否则,CSV 数据将以字符串格式返回。
  • 下面看一组简单的示例:
import pandas as pd

data = {'Name': ['Smith', 'Parker'], 'ID': [101, 102], 'Language': ['Python', 'JavaScript']}
info = pd.DataFrame(data)
print('DataFrame Values:\n', info)
# 转换为csv数据
csv_data = info.to_csv()
print('\nCSV String Values:\n', csv_data)
DataFrame Values:
      Name   ID    Language
0   Smith  101      Python
1  Parker  102  JavaScript

CSV String Values:
 ,Name,ID,Language
0,Smith,101,Python
1,Parker,102,JavaScript
  • 指定 CSV 文件输出时的分隔符,并将其保存在 pandas.csv 文件中
import pandas as pd

# 注意:pd.NaT表示null缺失数据
data = {'Name': ['Smith', 'Parker'], 'ID': [101, pd.NaT], 'Language': ['Python', 'JavaScript']}
info = pd.DataFrame(data)
csv_data = info.to_csv("pandas.csv", sep='|')
|Name|ID|Language
0|Smith|101|Python
1|Parker||JavaScript

【三】Pandas Excel读写操作详解

  • Excel 是由微软公司开发的办公软件之一,它在日常工作中得到了广泛的应用。
  • 在数据量较少的情况下,Excel 对于数据的处理、分析、可视化有其独特的优势,因此可以显著提升您的工作效率。
  • 但是,当数据量非常大时,Excel 的劣势就暴露出来了,比如,操作重复、数据分析难等问题。
  • Pandas 提供了操作 Excel 文件的函数,可以很方便地处理 Excel 表格。

【1】to_excel()

  • 通过 to_excel() 函数可以将 Dataframe 中的数据写入到 Excel 文件。
  • 如果想要把单个对象写入 Excel 文件,那么必须指定目标文件名;
  • 如果想要写入到多张工作表中,则需要创建一个带有目标文件名的ExcelWriter对象,并通过sheet_name参数依次指定工作表的名称。
  • to_ecxel() 语法格式如下:
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。
  • 简单的示例
  • 在较新版本的 Pandas 中,pd.ExcelWriter 对象不再有 save 方法。
  • 您可以使用 close 方法来保存并关闭 ExcelWriter 对象
import pandas as pd

# 创建DataFrame数据
info_website = pd.DataFrame({'name': ['编程帮', 'c语言中文网', '微学苑', '92python'],
                             'rank': [1, 2, 3, 4],
                             'language': ['PHP', 'C', 'PHP', 'Python'],
                             'url': ['www.编程帮.com', 'c.语言中文网.net', 'www.微学苑.com', 'www.92python.com']})

# 创建ExcelWriter对象
writer = pd.ExcelWriter('website.xlsx')
info_website.to_excel(writer, index=False)

# 保存并关闭ExcelWriter对象
writer.close()

print('输出成功')

Pandas操作Excel

【2】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 int或list类型,默认为None,表示需要读取所有列。
squeeze boolean,默认为False,如果解析的数据只包含一列,则返回一个Series。
converters 规定每一列的数据类型。
skiprows 接受一个列表,表示跳过指定行数的数据,从头部第一行开始。
nrows 需要读取的行数。
skipfooter 接受一个列表,省略指定行数的数据,从尾部最后一行开始。
  • 示例如下所示
import pandas as pd

# 读取excel数据
df = pd.read_excel('website.xlsx', engine='openpyxl', index_col='name', skiprows=[2])
# 处理未命名列
df.columns = df.columns.str.replace('Unnamed.*', 'col_label')
print(df)
          rank language               url
name                                     
编程帮          1      PHP       www.编程帮.com
微学苑          3      PHP       www.微学苑.com
92python     4   Python  www.92python.com

标签:文件,None,read,df,7.0,pd,csv,Pandas
From: https://www.cnblogs.com/dream-ze/p/17726184.html

相关文章

  • 【6.0】Pandas绘图
    【一】Pandas绘图Pandas在数据分析、数据可视化方面有着较为广泛的应用,Pandas对Matplotlib绘图软件包的基础上单独封装了一个plot()接口,通过调用该接口可以实现常用的绘图操作。本节我们深入讲解一下Pandas的绘图操作。Pandas之所以能够实现了数据可视化,主要利用了......
  • 【Pandas笔记总结】
    【一】Pandos初识Pandas是什么Pandas主要特点Pandas主要优势Pandas内置数据结构Pandas下载与安装【二】PandasSeries入门PandasSeries是什么PandasSeries创建PandasSeries访问PandasSeries常用属性PandasSeries常用方法【三】PandasDataFrame入门P......
  • 【5.0】Pandas描述性统计
    【一】PythonPandas描述性统计描述统计学(descriptivestatistics)是一门统计学领域的学科,主要研究如何取得反映客观现象的数据,并以图表形式对所搜集的数据进行处理和显示,最终对数据的规律、特征做出综合性的描述分析。Pandas库正是对描述统计学知识完美应用的体现,可以说如果没......
  • 【4.0】Pandas Panel三维数据结构
    【一】三维数据结构Panel结构也称“面板结构”,它源自于PanelData一词,翻译为“面板数据”。如果您使用的是Pandas0.25以前的版本,那么您需要掌握本节内容,否则,作为了解内容即可。自Pandas0.25版本后,Panel结构已经被废弃。Panel是一个用来承载数据的三维数据结构,它......
  • 【8.0】Pandas和NumPy的比较
    【一】引入我们知道Pandas是在NumPy的基础构建而来因此,熟悉NumPy可以更加有效的帮助我们使用Pandas。NumPy主要用C语言编写因此,在计算还和处理一维或多维数组方面,它要比Python数组快得多。关于NumPy的学习,可以参考《PythonNumPy教程》。【二】创建数组数......
  • golang 把内容写到 csv 文件或者 xlsx 文件里
    内容来自对chatgpt的咨询csv格式csv格式的文件使用wps或者office打开后是一个excel表格的形式,很容易看到表格里的数据。csv格式跟markdown格式有点像,只需要按照固定的语法放置文本,保存后,用对应的渲染软件打开,就能得到想要的效果。比如下面这段json,用文本编辑器......
  • Python处理CSV文件
    python处理CSV文件CSV文件CSV(comma-separatedvalues)文件是一种文本文件格式,允许以表格结构保存数据。这是一种流行的格式,用于从数据库和电子表格导出和导入数据,CSV文件中的每条数据都用逗号(,)分隔,例如,第一行数据可以选择用作标题,标明其下方的每一列数据:处理CSV文件CSV......
  • 南方cass软件下载-南方cass7.0/9.0/11.0中文版 各个版本下载
    南方CASS9.1是款非常专业的cad图形设计软件,它是在cad的基础上二次开发的,cass必须配合cad软件才能够使用,功能非常强大,界面简洁明晰、操作方便快捷。南方CASS9.0能完美的兼容AutoCAD2000、AutoCAD2004、AutoCAD2005、AutoCAD2006以及AutoCAD2010等等的加载,全新的属性面板,更精准的查......
  • python的pandas库:合并数据
    在Pandas中,如果你有两个数据框(DataFrames),且它们的列数和列名都相同,你可以使用concat或merge函数将它们合并。以下是具体步骤:首先,导入Pandas库:importpandasaspd创建两个列数和列名都相同的数据框:df1=pd.DataFrame({'A':['A0','A1','A2','A3'],'B':[�......
  • 已解决pandas无法读取中文文件的问题
    已解决pandas无法读取中文文件的问题文章目录报错问题解决方法声明报错问题之前在工作中遇到过这个坑,记录一下问题以及解决方法,不一定针对所有情况都能用,但是可以供大家参考。问题描述如下:pandas无法读取中文文件的问题文件有问题或者环境编码有问题!解决方法data=open(r'dataset......