欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > pandas(12 IO工具和稀松数据)

pandas(12 IO工具和稀松数据)

2025/2/22 2:14:01 来源:https://blog.csdn.net/m0_73644308/article/details/145614154  浏览:    关键词:pandas(12 IO工具和稀松数据)

前面内容:pandas(11 分类数据和数据可视化)

目录

一、Python Pandas IO工具

1.1  read_csv() 和 read_table() 

1.2  CSV 文件

 二、Python Pandas 稀疏数据

 2.1 SparseDtype() 

 2.2 density和dense

2.3 稀疏数据类型


一、Python Pandas IO工具

Pandas I/O API 是一组顶级读取函数,可以像 pd.read_csv() 一样访问,通常返回一个Pandas对象。

读取文本文件(或平面文件)的两个核心函数是 read_csv() 和 read_table() 。它们都使用相同的解析代码,智能地将表格数据转换为 DataFrame 对象 –

1.1  read_csv() 和 read_table() 

read_csv() : 

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

read_table() : 

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

1. filepath_or_buffer

  • 作用:指定要读取的文件路径或文件对象。

  • 类型:字符串或 path-like 对象。

  • 示例"data.csv"r"c:\path\to\file.csv"

2. sepdelimiter

  • 作用:指定分隔符。它用于分隔每一列的数据。sepdelimiter 是可以互换的参数,sepread_csv() 的标准参数,delimiter 只是别名。

  • 默认值,(逗号)。

  • 示例

    • sep=',' 适用于标准的 CSV 文件。

    • sep='\t' 适用于以制表符(Tab)分隔的文件(TSV 文件)。

    • sep=';' 适用于以分号分隔的文件。

3. header

  • 作用:指定哪一行是列名。如果设置为 None,则默认从文件的第一行读取列名。

  • 默认值'infer',表示自动推断列名(即文件的第一行作为列名)。

  • 示例

    • header=0:使用文件的第一行作为列名。

    • header=None:不使用文件的任何行作为列名,并且会自动生成默认列名。

    • header=1:将文件的第二行作为列名。

4. names

  • 作用:指定列名。如果 header=None,则必须提供此参数来指定列名。

  • 类型:列表或数组,包含列名的字符串。

  • 示例

    names=['Column1', 'Column2', 'Column3']

5. index_col

  • 作用:指定哪一列作为行索引。可以是列的名称或列的索引(0-based)。

  • 默认值None,表示没有指定索引列。

  • 示例

    • index_col=0:使用文件中的第一列作为索引。

    • index_col='ID':使用名为 'ID' 的列作为索引。

6. usecols

  • 作用:指定要读取的列的名称或索引,可以是一个列表。如果你只想读取数据文件中的一部分列,可以使用此参数来选择特定的列。

  • 类型:列表、字符串或 None

  • 示例

    • usecols=['A', 'B', 'C']:只读取列 ABC

    • usecols=[0, 2, 3]:只读取索引为 0、2 和 3 的列。

1.2  CSV 文件

 例1:创建 CSV 文件

import pandas as pd# 创建一个 DataFrame
temp = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],'Age': [25, 30, 35, 40],'City': ['New York', 'Los Angeles', 'Chicago', 'Houston'],'Salary' :[2000,3000,5000,8000]
}df = pd.DataFrame(temp)# 将 DataFrame 保存为 CSV 文件
df.to_csv('temp.csv', index=False)  # `index=False` 避免将行索引写入文件

 例2:读取csv

df=pd.read_csv("temp.csv")
print(df)

运行结果:

例3:自定义索引

df_with_index = pd.read_csv("temp.csv", index_col='Name')
print(df_with_index)

运行结果:

 

例4:转换数据类型

df = pd.read_csv("temp.csv", dtype={'Salary': np.float64})
print(df.dtypes)# 输出数据类型
print('-'*50)
print(df)

运行结果:

 

例5:header_names

使用names参数指定头部的名称。

df=pd.read_csv("temp.csv", names=['a', 'b', 'c','d'])
print(df)
print('-'*50)
df=pd.read_csv("temp.csv",names=['a','b','c','d'],header=0)
print(df)

运行结果:

例6:跳过行数

skiprows跳过指定的行数。

df=pd.read_csv("temp.csv", skiprows=2)
print(df)

运行结果:

 二、Python Pandas 稀疏数据

Pandas提供了对稀疏数据的原生支持,尤其是通过稀疏Series稀疏DataFrame。在Pandas中,稀疏数据主要通过SparseDtype() 来实现。稀疏对象的存在是为了提高内存效率

 2.1 SparseDtype() 

SparseDtype()参数: 

1. dtype

  • 作用:指定数据的类型。例如,"float64", "int32", "bool" 等等。
  • 默认值:没有默认值,必须提供一个数据类型。
  • 示例pd.SparseDtype("float64") 表示该稀疏数据为 float64 类型。

2. fill_value

  • 作用:指定用于表示缺失值的填充值。通常用 np.nan 或其他占位符(如 0)表示稀疏值。
  • 默认值np.nan
  • 示例pd.SparseDtype("float64", np.nan) 表示稀疏数据为 float64 类型,缺失值使用 np.nan 填充。 

例1:SparseDtype() 

import pandas as pd
import numpy as np# 创建一个包含随机数的Series
ts = pd.Series(np.random.randn(10))# 将一些值设置为NaN
ts[2:-2] = np.nan# 将Series转换为稀疏格式
sts = ts.astype(pd.SparseDtype("float64", np.nan))
# 打印稀疏Series
print(sts)

运行结果:

 2.2 density和dense

例2:sparse.density

import pandas as pd
import numpy as np# 创建一个包含随机数的DataFrame
df = pd.DataFrame(np.random.randn(10000, 4))# 将前9999行的所有值设置为NaN,构成稀疏数据
df.iloc[:9999] = np.nan# 转换为稀疏DataFrame
sdf = df.astype(pd.SparseDtype("float64", np.nan))# 打印稀疏DataFrame的密度
print(sdf.sparse.density)

注意:density是 SparseSeries 中的一个属性,而不是 DataFrame 中的,所以.sparse.density不能缺 

例3 :转换回密集型 

import pandas as pd
import numpy as np
ts = pd.Series(np.random.randn(10))
ts[2:-2] = np.nan
sts = ts.astype(pd.SparseDtype())
print(sts.sparse.to_dense())

运行结果:

2.3 稀疏数据类型

稀疏数据应与其稠密表示具有相同的数据类型。目前支持 float64, int64 和 booldtypes 。根据原始数据类型, fill_value 的默认值会发生变化 −

  • float64 − np.nan
  • int64 − 0

  • bool − False

例4:

import pandas as pd
import numpy as nps = pd.Series([1, np.nan, np.nan])
print(s)
print('-'*50)
s_sparse = s.astype(pd.SparseDtype())
print(s_sparse)

运行结果:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词