3-7 pandas数据的读取与存储

3-7 pandas数据的读取与存储,第1张

3-7 pandas数据读取与存储

数据分析工具pandas
  • 7. 数据的读取与存储
    • 7.1 读 *** 作
    • 7.2 写 *** 作
    • 7.3 JSON格式
    • 7.4 分块读取大文件

Pandas是一个强大的分析结构化数据的工具集,基于NumPy构建,提供了 高级数据结构和 数据 *** 作工具,它是使Python成为强大而高效的数据分析环境的重要因素之一
(1) 一个强大的分析和 *** 作大型结构化数据集所需的工具集
(2) 基础是NumPy,提供了高性能矩阵的运算
(3) 提供了大量能够快速便捷地处理数据的函数和方法
(4)应用于数据挖掘,数据分析
(5)提供数据清洗功能

7. 数据的读取与存储 7.1 读 *** 作

读取文件函数:

函数说明read_csv从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为逗号read_table从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为制表符(’t’)read_fwf读取定宽列格式数据(也就是说。没有分隔符)read_clipboard读取剪贴板中的数据,可以看做read_table的剪贴板版。再将网页转换为表格时很有用read_excel从 Exeel XLS或XLSX file读取表格教据read_hdf读取pandas写的HDFS文件read_html读取HTML文档中的所有表格read_json读取JSON字符串中的数据read_msgpack二进制格式编码的pandas数据read_pickle读取Pythom pickle格式中存储的任意对象read_sas读取存储于SAS系统自定义存储格式的SAS数据集read_sql(使用SQL Alchemy)读取SQL查询结果为 pandas的 Dataframeread_stata读取 Stata 文件格式的教据集

读取文件函数中参数说明:

参数说明path表示文件系统位置、url、文件型对象的字符串sep或delimiter用于对行中各字段进行拆分的字符序列或正则表达式header用作列名的行号。默认为0(第一行),如果没有header行就应该设置为Noneindex_col用作行索引的列编号或列名。可以是单个名称/数字或由多个名称/数字组成的列表(层次化索引)names用于结果的列名列表,结合header=Noneskiprows需要忽略的行数(从文件开始出算起),或需要跳过的行号列表(从0开始)na_values一组用于替换NA的值comment用于将注释信息从行尾拆分出去的字符parse_dates尝试将数据解析为日期,默认为False。如果为True,则尝试解析所有列。此外,还可以指定需要解析的一组列号或列名。如果列表的元素为列表或元祖,就会将多个列组合到一起再进行日期解析工作(例如,日期/时间分别位于两个列中)keep_date_col如果连接多列解析日期,则保持参与连接的列。默认为Falseconverters由列号/列名跟函数之间的映射关系组成的字典。例如,{‘foo’:f}会对foo列的所有值应用函数fdayfirst当解析有歧义的日期时,将其看做国际格式(例如,7/6/2012->June,7,2012)。默认为Falseday_parser用于解析日期的函数nrows需要读取的行数(从文件开始处算起)iterator返回一个TextParser以便逐块读取文件chunksize文件块的大小(用于迭代)skip_footer需要忽略的行数(从文件末尾处算起)

示例代码:

#读 *** 作
#read_csv默认的分隔符为,
df = pd.read_csv('ex1.csv')
#结果为:
#	a	b	c	d	message
#0	1	2	3	4	hello
#1	5	6	7	8	world
#2	9	10	11	12	python
df
#read_table默认分隔符为制表符
#结果为:
#	a	b	c	d	message
#0	1	2	3	4	hello
#1	5	6	7	8	world
#2	9	10	11	12	python
pd.read_table('ex1.csv',sep=',')
#读取没有列名只有数据的文件 读取文件时列名为默认列名
#结果为:
#	0	1	2	3	4
#0	1	2	3	4	hello
#1	5	6	7	8	world
#2	9	10	11	12	python
pd.read_csv('ex2.csv',header=None)
#读取没有列名只有数据的文件 读取文件时给定列名
#结果为:
#	a	b	c	d	message
#0	1	2	3	4	hello
#1	5	6	7	8	world
#2	9	10	11	12	python
pd.read_csv('ex2.csv',names=['a','b','c','d','message'])
#index_col指定某一列变为行索引
df1 = pd.read_csv('ex2.csv',names=['a','b','c','d','message'],index_col='message')
#结果为:
#		a	b	c	d
#message				
#hello	1	2	3	4
#world	5	6	7	8
#python	9	10	11	12
df1
#结果为:
#   key1	key2	value1	value2
#0	one	       a	   1	   2
#1	one	       b	   3	   4
#2	one	       c	   5	   6
#3	one	       d	   7	   8
#4	two	       a	   9	   10
#5	two	       b	   11	   12
#6	two	       c	   13	   14
#7	two	       d	   15	   16
pd.read_csv('csv_mindex.csv')
#指定多列为层级索引
pa = pd.read_csv('csv_mindex.csv',index_col=['key1','key2'])
#结果为:
#				value1	value2
# key1	key2		
# one	a			1		2
#		b			3		4
#		c			5		6
#		d			7		8
# two	a			9		10
#		b			11		12
#		c			13		14
#		d			15		16
pa
#read_table读取txt文件 sep='s+'
df1 = pd.read_table('ex3.txt',sep='s+')
#结果为:
#			A			B			C
#aaa	-0.264438	-1.026059	-0.619500
#bbb	0.927272	0.302904	-0.032399
#ccc	-0.264273	-0.386314	-0.217601
#ddd	-0.871858	-0.348382	1.100491
df1
7.2 写 *** 作
df2 = pd.read_csv('ex1.csv')
#结果为:
#	a	b	c	d	message
#0	1	2	3	4	hello
#1	5	6	7	8	world
#2	9	10	11	12	python
df2
#将dataframe数据写入csv文件中
df2.to_csv('out_ex1.csv')
7.3 JSON格式
## JSON数据
import json
obj = """
{"name":"Wes",
 "places_lived":["United States","Spain","Germany"],
 "pet":null,
 "siblings":[{"name":"Scott","age":30,"pets":["Zeus","Zuko"]},
             {"name":"Katie","age":38,
             "pets":["Sixes","Stache","Cisco"]}]

}
"""
#将json字符串转换为python形式
res = json.loads(obj)
#结果为:
#{'name': 'Wes',
# 'places_lived': ['United States', 'Spain', 'Germany'],
# 'pet': None,
# 'siblings': [{'name': 'Scott', 'age': 30, 'pets': ['Zeus', 'Zuko']},
#  {'name': 'Katie', 'age': 38, 'pets': ['Sixes', 'Stache', 'Cisco']}]}
res
#将python对象转化为json格式
res1 = json.dumps(res)
#结果为:
#'{"name": "Wes", "places_lived": ["United States", "Spain", "Germany"], "pet": null, "siblings": [{"name": "Scott", "age": 30, "pets": ["Zeus", "Zuko"]}, {"name": "Katie", "age": 38, "pets": ["Sixes", "Stache", "Cisco"]}]}'
res1
#读取python形式对象中某个参数的值
sib = pd.Dataframe(res['siblings'],columns=['name','age'])
#结果为:
#	name	age
#0	Scott	30
#1	Katie	38
sib
7.4 分块读取大文件
#方式一
agg1 = pd.read_csv(r'agg_match_stats_1.csv',chunksize=10)
agg1.get_chunk()
#方式二
agg1 = pd.read_csv(r'agg_match_stats_1.csv',iterator=True)
agg1.get_chunk(5)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5636304.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存