主页 > 手机  > 

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

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

前面内容: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. sep 或 delimiter

作用:指定分隔符。它用于分隔每一列的数据。sep 和 delimiter 是可以互换的参数,sep 是 read_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']:只读取列 A、B 和 C。

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 np s = pd.Series([1, np.nan, np.nan]) print(s) print('-'*50) s_sparse = s.astype(pd.SparseDtype()) print(s_sparse)

运行结果:

标签:

pandas(12IO工具和稀松数据)由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“pandas(12IO工具和稀松数据)