pandas-数据读取和保存

pandas数据读取和保存

pandas 可以读取和导入各种数据格式的数据,如CSV,Excel,JSON,SQL,HTML等,不需要手动编写复杂的读取代码。

read_csv

DataFrame.read_csv(filepath_or_buffer, sep=',', delimiter=None, header='infer', names=None, index_col=None, usecols=None, squeeze=False, prefix=None, mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, iterator=False, chunksize=None, compression='infer', thousands=None, decimal=b'.', lineterminator=None, quotechar='"', quoting=0, escapechar=None, comment=None, encoding=None, dialect=None, tupleize_cols=False, error_bad_lines=True, warn_bad_lines=True, skipfooter=0, skip_footer=0, doublequote=True, delim_whitespace=False, as_recarray=False, compact_ints=False, use_unsigned=False, low_memory=True, buffer_lines=None, memory_map=False, float_precision=None)


filepath_or_buffer  文件路径,唯一必须参数
sep                 指定分隔符
delimiter           备选分隔符
usecols             选取列, 可以使用列序列也可以使用列名
header              指定哪一行为表头
name                指定列的名称 (默认是第一行为数值为每列的名称)  自定义表头 和header二选一
index_col           指定某一列数据作为行索引
usecols             在读取的时候只想要使用到的列
encoding            指定编码方式

相关属性和方法

df.shape 		# 查看行数和列数
df.dtypes 		# 查看各字段类型
df.axes 		# 显示数据行和列名
df.columns 		# 列名, # 查看字段(⾸⾏)名称


df.info() 		# 显示有数据类型、索引情况、行列数、各字段数据类型、内存占用等

df.describe() 	# 查看数值型列的汇总统计,
				#计算出各数字字段的总数(count)、平均数(mean)、标准差(std)、最小值(min)、四分位数和最大值(max)

df.head() 		# 查看前5条,括号里可以写明你想看的条数
df.tail() 		# 查看尾部5条
df.sample(5) 	# 随机查看5条

假设csv数据中存储是以下数据

City, State, Capital, Population
beijing, beifang, No, 1.581 Million
shanghai, dongfang, Yes, 0.5 Million
guandong, nanfang, No, 8.623 Million
chengdu, xinan, Yes, 0.95 Million
wuhan, zhongbu, No, 0.463 Million
import pandas as pd

pddf=pd.read_csv("demo.csv",sep=",")

print(pddf)
print(pddf.shape)
print(pddf.dtypes)
print(pddf.columns)
print(pddf.axes)

# 执行结果=================================================
	 City      State  Capital      Population
0   beijing    beifang       No   1.581 Million
1  shanghai   dongfang      Yes     0.5 Million
2  guandong    nanfang       No   8.623 Million
3   chengdu      xinan      Yes    0.95 Million
4     wuhan    zhongbu       No   0.463 Million
(5, 4)
City           object
 State         object
 Capital       object
 Population    object
dtype: object
Index(['City', ' State', ' Capital', ' Population'], dtype='object')
[RangeIndex(start=0, stop=5, step=1), Index(['City', ' State', ' Capital', ' Population'], dtype='object')]

自定义列名称

import pandas as pd

col_names = ['Citys',
             'States',
             'Class',
             'Gender',
             'Age',
             'Price',
             'Cabin',
             'Station']

pddf = pd.read_csv("demo.csv", sep=",", names=col_names)

print(pddf)

read_excel

pandas.read_excel()的作用:将Excel文件读取到pandas DataFrame中

DataFrame.read_excel(io, sheetname=0, header=0, skiprows=None, skip_footer=0, index_col=None, names=None, parse_cols=None, parse_dates=False, date_parser=None, na_values=None, thousands=None, convert_float=True, has_index_names=None, converters=None, dtype=None, true_values=None, false_values=None, engine=None, squeeze=False, **kwds)


参数说明
io:           字符串,文件的路径对象
sheetname:   None、string、int、字符串列表或者是整数列表,default 为0
header:      表示的是哪一行作为列索引,默认是0(第一行)      
names:       指定列的名称 (默认是第一行为数值为每列的名称)   自定义表头 和header二选一
index_col:	 指定列为索引列,默认None列
engine:      读取引擎 可以修改为 'openpyxl' 

相同的相关属性和方法

df.shape 		# 查看行数和列数
df.dtypes 		# 查看各字段类型
df.axes 		# 显示数据行和列名
df.columns 		# 列名, # 查看字段(⾸⾏)名称


df.info() 		# 显示有数据类型、索引情况、行列数、各字段数据类型、内存占用等

df.describe() 	# 查看数值型列的汇总统计,
				#计算出各数字字段的总数(count)、平均数(mean)、标准差(std)、最小值(min)、四分位数和最大值(max)

df.head() 		# 查看前5条,括号里可以写明你想看的条数
df.tail() 		# 查看尾部5条
df.sample(5) 	# 随机查看5条

to_excel

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_writer      字符串或Excelwrite对象,文件路径
sheet_name        字符串,默认'Sheet1'

header:			 写出列名。如果给出了字符串列表, 则假定它是列名的别名。
index:			 是否写入索引。 bool值
index_label:     引用索引列的列标签。如果未指定, 并且标头和索引为True, 则使用索引名称。如果DataFrame使用MultiIndex, 则应给出一个序列。
startrow:        默认值0。它指向转储DataFrame的左上单元格行。
startcol:		 默认值0。它指向转储DataFrame的左上方单元格列。
engine:			 这是一个可选参数, 用于写入要使用的引擎, openpyxl或xlsxwriter。
merge_cells:	 返回布尔值, 其默认值为True。它将MultiIndex和Hierarchical行写为合并的单元格。
encoding:        这是一个可选参数, 可对生成的excel文件进	行编码。仅对于xlwt是必需的。

多个sheet 写入到同一个文件时

import pandas as pd
 
df1 = pd.DataFrame({'One': [1, 2, 3]})
df2 = pd.DataFrame({'Two': [4, 5, 6]})
 
with pd.ExcelWriter('excel1.xlsx') as writer:
    df1.to_excel(writer, sheet_name='Sheet1', index=False)  # 不写入列名
    df2.to_excel(writer, sheet_name='Sheet2', index=False)  # 不写入列名

不改变文件,新增sheet

import pandas as pd
 
df3 = pd.DataFrame({'Three': [7, 8, 9]})
with pd.ExcelWriter('excel1.xlsx', mode='a') as writer:
    df3.to_excel(writer, sheet_name='Sheet3', index=False)

to_csv

DataFrame.to_csv(path_or_buf=None, sep=',', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, mode='w', encoding=None, compression='infer', quoting=None, quotechar='"', line_terminator=None, chunksize=None, date_format=None, doublequote=True, escapechar=None, decimal='.', errors='strict')


path_or_buf=None 	字符串或文件目录,文件路径或对象
sep=',' 			输出文件的字段分隔符,默认点
na_rep=''			缺失数据填充
float_format=None   小数点保留几位
columns=None 		要写入的字段
header=True  	    列名的别名
index=True 			写行名(索引)
index_label=None	索引列的列标签。如果没有给出,并且header和index为True,则使用索引名
mode='w' 			写入模式,默认为w,
encoding=None 		表示输出文件中使用的编码的字符串,默认为"utf-8"

保存和加载hdf5

HDF(Hierarchical Data Format, 层级数据格式),是设计用来存储和组织大量数据的一组文件格式(HDF4,HDF5)

HDF5 允许您存储大量的数值数据,同时能够轻松、快速地访问数据。数千个数据集可以存储在一个文件中,可以根据需要进行分类和标记

import pandas as pd

# 创建一个DataFrame对象
data = {'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35]}
df = pd.DataFrame(data)

# 存储数据到HDF5文件
df.to_hdf('data.h5', key='data')

# 保存数据到HDF5
pd.read_hdf('data.h5', key='data', mode="r")

其他数据格式

  1. CSV -- 一种非常常用的数据格式
  2. Pickle -- 一种Python的方式来序列化事物
  3. MessagePack -- 它就像JSON,但又快又小
  4. HDF5 -- 一种设计用于存储和组织大量数据的文件格式
  5. Feather -- 一种用于存储数据帧的数据格式,可以高速读写压缩二进制文件 适合短期存储
  6. Parquet -- Apache Hadoop的柱状存储格式

参考资料

https://zhuanlan.zhihu.com/p/557325246

https://zhuanlan.zhihu.com/p/166597513

https://blog.csdn.net/weixin_50220061/article/details/109232688

https://blog.csdn.net/Leon_wp/article/details/112858222

posted @ 2023-08-23 08:22  贝壳里的星海  阅读(284)  评论(0编辑  收藏  举报