12.pandas 读取与写入文件
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
from numpy import nan as NA
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
读取csv
# pd.read_csv() 默认 逗号为分隔符 ,默认首行作为 columnsName
pd.read_csv('data/ex1.csv')
a b c d message
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
# pd..read_table()也可以读取,但是要指定分隔符参数sep=''
pd.read_table('data/ex1.csv',sep=',')
a b c d message
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
# 读取没有明显列名称的文件,不需要让首行作为列,用参数header=None
df2=pd.read_csv('data/ex2.csv',header=None)
df2
0 1 2 3 4
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
# 自d义列名称读取 参数names=[]
# names给几列,就会从最后向前读几列数据,剩下的都是index
# 超出就是nan
df3=pd.read_csv('data/ex2.csv',names=['aa','bb','cc','dd','message','nn'])
df3
aa bb cc dd message nn
0 1 2 3 4 hello NaN
1 5 6 7 8 world NaN
2 9 10 11 12 foo NaN
# 设置行索引 index_col='某个列name'
df4=pd.read_csv('data/ex2.csv',names=['aa','bb','cc','dd','message'],index_col='message')
df4
aa bb cc dd
message
hello 1 2 3 4
world 5 6 7 8
foo 9 10 11 12
# 多列的值作为行索引
df5=pd.read_csv('data/csv_mindex.csv',index_col=['key1','key2'])
df5
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
# 读取不规则的分隔符数据,使用分隔符sep=''
# 使用正则表达式做分隔符,不需要导入re,直接写正则字符串
# \s+
df6=pd.read_csv('data/ex3.txt',sep='\s+')
df6
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
# 使用参数skiprows=[] 跳过一些行
df7=pd.read_csv('data/ex4.csv',skiprows=[0,2,3])
df7
a b c d message
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
# comment='#',指定#开头的注释,不用读取
pd.read_csv('data/ex4.csv',comment='#')
a b c d message
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
# 需要读取xxx值为nan,参数na_values=[],空值与NA字符默认是nan了
df8=pd.read_csv('data/ex5.csv',na_values=[1,2,'world'])
df8
something a b c d message
0 one NaN NaN 3.0 4 NaN
1 two 5.0 6.0 NaN 8 NaN
2 three 9.0 10.0 11.0 12 foo
3 foo NaN NaN 11.0 12 two
# 指定不同列的不同数据为nan
# 用字典匹配,某个列的一个值或多个值
nans={'something':'two','message':['foo','world']}
df9=pd.read_csv('data/ex5.csv',na_values=nans)
df9
something a b c d message
0 one 1 2 3.0 4 NaN
1 NaN 5 6 NaN 8 NaN
2 three 9 10 11.0 12 NaN
3 foo 1 2 11.0 12 two
写入csv
# 模拟创建一个成绩表,语文,数学,英语。各科成绩有重复。
names = '尺,寸,人,下,匕,卜,之,田,丫,乃,贝,井,工,几,女,巨,爪,火,了,方,木,中,寸,石,户,友,夫,不,可,主,又,丑,巾,口,电,门,术,儿,羊,丁,心,天,化,气,正,页,兄,伏,大,计'.split(',')
df10 = DataFrame({'语文':np.random.randint(90,100,50),'数学':np.random.randint(80,100,50),'英语':np.random.randint(60,100,50),'化学':np.random.randint(60,100,50),'物理':np.random.randint(60,100,50),'生物':np.random.randint(60,100,50),'政治':np.random.randint(60,100,50),'历史':np.random.randint(60,100,50),'地理':np.random.randint(60,100,50)},index = [np.random.choice(list('赵钱孙李周吴郑王'))+names.pop(np.random.randint(0,len(names))) for i in range(50)]
)
df10
语文 数学 英语 化学 物理 生物 政治 历史 地理
赵大 97 90 68 86 73 94 70 70 72
孙兄 91 99 86 89 68 96 70 82 60
钱术 95 87 87 67 99 88 85 65 95
吴羊 92 98 94 64 96 82 65 85 69
王女 91 84 84 88 92 75 82 97 91
王卜 94 89 90 99 95 99 67 82 82
王可 94 90 76 68 93 82 93 99 83
钱巾 97 85 92 81 71 85 90 60 65
李丁 90 94 86 71 90 98 60 87 75
吴丫 91 82 70 70 86 68 61 94 99
吴丑 91 97 78 79 82 95 83 80 92
钱火 97 97 72 99 66 67 80 80 73
王石 96 83 69 66 90 60 86 93 92
李人 91 95 60 96 99 94 69 64 89
郑正 90 84 82 62 67 82 88 71 65
王乃 93 96 60 79 86 95 89 61 65
李寸 94 91 62 71 77 88 61 94 87
郑之 96 97 96 74 70 70 72 78 73
钱口 96 80 98 69 70 66 73 70 69
孙寸 96 81 70 97 74 92 64 94 87
吴儿 98 85 71 96 72 83 61 97 98
李木 94 82 69 71 88 92 93 92 76
赵主 95 80 83 80 63 94 76 67 75
钱巨 93 96 98 72 80 84 86 98 96
郑电 99 95 63 97 98 92 60 90 79
赵工 99 86 60 83 86 97 80 98 80
李方 91 83 85 75 76 85 74 87 76
李门 90 89 64 76 75 89 75 76 72
李几 96 82 70 88 79 96 60 85 61
赵夫 94 94 68 98 95 85 65 98 63
吴井 92 89 86 79 78 68 98 78 73
郑天 91 85 97 84 64 93 90 97 93
孙计 96 84 74 91 85 64 69 64 66
郑尺 99 84 93 88 99 87 76 80 85
孙友 98 95 75 85 94 89 69 74 82
郑中 96 81 88 66 68 71 88 83 63
赵页 98 97 63 66 71 98 97 63 60
郑户 91 88 68 73 76 81 87 87 89
王了 95 83 64 94 89 71 96 85 76
赵爪 92 92 88 83 81 98 81 97 63
吴又 99 99 71 61 90 60 65 74 77
钱化 93 92 63 82 86 82 88 96 88
吴不 94 83 75 90 71 91 84 99 83
吴伏 91 84 66 93 62 88 78 81 68
王贝 92 93 75 86 70 84 84 84 64
李气 97 99 72 60 69 68 67 74 75
李田 91 90 84 71 79 80 91 65 66
李下 98 81 65 92 72 65 72 64 77
李匕 90 82 96 99 87 88 88 64 95
李心 99 97 87 72 71 63 98 75 78
# 保存,行列索引都存进去了
df10.to_csv('成绩.csv',encoding='utf-8')
# index=False 不要行索引
df10.to_csv('成绩1.csv',index=False)
# header=False 不要行索引
df10.to_csv('成绩2.csv',header=False)
# na_rep='' 将nan换成xx进行存储,默认是空
df10.iloc[0,3]=NA
df10.to_csv('成绩3.csv',na_rep='空')
# 预览存储效果
import sys
# 以竖线为分隔符的预览效果
df10.to_csv(sys.stdout,sep='|',na_rep='空空')
|语文|数学|英语|化学|物理|生物|政治|历史|地理
赵大|97|90|68|空空|73|94|70|70|72
孙兄|91|99|86|89.0|68|96|70|82|60
钱术|95|87|87|67.0|99|88|85|65|95
吴羊|92|98|94|64.0|96|82|65|85|69
王女|91|84|84|88.0|92|75|82|97|91
王卜|94|89|90|99.0|95|99|67|82|82
王可|94|90|76|68.0|93|82|93|99|83
钱巾|97|85|92|81.0|71|85|90|60|65
李丁|90|94|86|71.0|90|98|60|87|75
吴丫|91|82|70|70.0|86|68|61|94|99
吴丑|91|97|78|79.0|82|95|83|80|92
钱火|97|97|72|99.0|66|67|80|80|73
王石|96|83|69|66.0|90|60|86|93|92
李人|91|95|60|96.0|99|94|69|64|89
郑正|90|84|82|62.0|67|82|88|71|65
王乃|93|96|60|79.0|86|95|89|61|65
李寸|94|91|62|71.0|77|88|61|94|87
郑之|96|97|96|74.0|70|70|72|78|73
钱口|96|80|98|69.0|70|66|73|70|69
孙寸|96|81|70|97.0|74|92|64|94|87
吴儿|98|85|71|96.0|72|83|61|97|98
李木|94|82|69|71.0|88|92|93|92|76
赵主|95|80|83|80.0|63|94|76|67|75
钱巨|93|96|98|72.0|80|84|86|98|96
郑电|99|95|63|97.0|98|92|60|90|79
赵工|99|86|60|83.0|86|97|80|98|80
李方|91|83|85|75.0|76|85|74|87|76
李门|90|89|64|76.0|75|89|75|76|72
李几|96|82|70|88.0|79|96|60|85|61
赵夫|94|94|68|98.0|95|85|65|98|63
吴井|92|89|86|79.0|78|68|98|78|73
郑天|91|85|97|84.0|64|93|90|97|93
孙计|96|84|74|91.0|85|64|69|64|66
郑尺|99|84|93|88.0|99|87|76|80|85
孙友|98|95|75|85.0|94|89|69|74|82
郑中|96|81|88|66.0|68|71|88|83|63
赵页|98|97|63|66.0|71|98|97|63|60
郑户|91|88|68|73.0|76|81|87|87|89
王了|95|83|64|94.0|89|71|96|85|76
赵爪|92|92|88|83.0|81|98|81|97|63
吴又|99|99|71|61.0|90|60|65|74|77
钱化|93|92|63|82.0|86|82|88|96|88
吴不|94|83|75|90.0|71|91|84|99|83
吴伏|91|84|66|93.0|62|88|78|81|68
王贝|92|93|75|86.0|70|84|84|84|64
李气|97|99|72|60.0|69|68|67|74|75
李田|91|90|84|71.0|79|80|91|65|66
李下|98|81|65|92.0|72|65|72|64|77
李匕|90|82|96|99.0|87|88|88|64|95
李心|99|97|87|72.0|71|63|98|75|78
print(123,file=open('123.txt','w'))
# 读取我们自己存储的成绩csv,人名以及行索引
s1=pd.read_csv('成绩.csv',index_col='Unnamed: 0')
s1
Unnamed: 0 语文 数学 英语 化学 物理 生物 政治 历史 地理
0 赵大 97 90 68 86 73 94 70 70 72
1 孙兄 91 99 86 89 68 96 70 82 60
2 钱术 95 87 87 67 99 88 85 65 95
3 吴羊 92 98 94 64 96 82 65 85 69
4 王女 91 84 84 88 92 75 82 97 91
5 王卜 94 89 90 99 95 99 67 82 82
6 王可 94 90 76 68 93 82 93 99 83
7 钱巾 97 85 92 81 71 85 90 60 65
8 李丁 90 94 86 71 90 98 60 87 75
9 吴丫 91 82 70 70 86 68 61 94 99
10 吴丑 91 97 78 79 82 95 83 80 92
11 钱火 97 97 72 99 66 67 80 80 73
12 王石 96 83 69 66 90 60 86 93 92
13 李人 91 95 60 96 99 94 69 64 89
14 郑正 90 84 82 62 67 82 88 71 65
15 王乃 93 96 60 79 86 95 89 61 65
16 李寸 94 91 62 71 77 88 61 94 87
17 郑之 96 97 96 74 70 70 72 78 73
18 钱口 96 80 98 69 70 66 73 70 69
19 孙寸 96 81 70 97 74 92 64 94 87
20 吴儿 98 85 71 96 72 83 61 97 98
21 李木 94 82 69 71 88 92 93 92 76
22 赵主 95 80 83 80 63 94 76 67 75
23 钱巨 93 96 98 72 80 84 86 98 96
24 郑电 99 95 63 97 98 92 60 90 79
25 赵工 99 86 60 83 86 97 80 98 80
26 李方 91 83 85 75 76 85 74 87 76
27 李门 90 89 64 76 75 89 75 76 72
28 李几 96 82 70 88 79 96 60 85 61
29 赵夫 94 94 68 98 95 85 65 98 63
30 吴井 92 89 86 79 78 68 98 78 73
31 郑天 91 85 97 84 64 93 90 97 93
32 孙计 96 84 74 91 85 64 69 64 66
33 郑尺 99 84 93 88 99 87 76 80 85
34 孙友 98 95 75 85 94 89 69 74 82
35 郑中 96 81 88 66 68 71 88 83 63
36 赵页 98 97 63 66 71 98 97 63 60
37 郑户 91 88 68 73 76 81 87 87 89
38 王了 95 83 64 94 89 71 96 85 76
39 赵爪 92 92 88 83 81 98 81 97 63
40 吴又 99 99 71 61 90 60 65 74 77
41 钱化 93 92 63 82 86 82 88 96 88
42 吴不 94 83 75 90 71 91 84 99 83
43 吴伏 91 84 66 93 62 88 78 81 68
44 王贝 92 93 75 86 70 84 84 84 64
45 李气 97 99 72 60 69 68 67 74 75
46 李田 91 90 84 71 79 80 91 65 66
47 李下 98 81 65 92 72 65 72 64 77
48 李匕 90 82 96 99 87 88 88 64 95
49 李心 99 97 87 72 71 63 98 75 78
excel
# 存储 前提需要安装 openpyxl
s1.to_excel('成绩.xlsx')
s1.to_excel('成绩1.xlsx',startrow=1,encoding='utf-8')
# 读取excel,参数读取csv ,多列个sheet_name
pd.read_excel('成绩.xlsx')
Unnamed: 0 Unnamed: 0.1 语文 数学 英语 化学 物理 生物 政治 历史 地理
0 0 赵大 97 90 68 86 73 94 70 70 72
1 1 孙兄 91 99 86 89 68 96 70 82 60
2 2 钱术 95 87 87 67 99 88 85 65 95
3 3 吴羊 92 98 94 64 96 82 65 85 69
4 4 王女 91 84 84 88 92 75 82 97 91
5 5 王卜 94 89 90 99 95 99 67 82 82
6 6 王可 94 90 76 68 93 82 93 99 83
7 7 钱巾 97 85 92 81 71 85 90 60 65
8 8 李丁 90 94 86 71 90 98 60 87 75
9 9 吴丫 91 82 70 70 86 68 61 94 99
10 10 吴丑 91 97 78 79 82 95 83 80 92
11 11 钱火 97 97 72 99 66 67 80 80 73
12 12 王石 96 83 69 66 90 60 86 93 92
13 13 李人 91 95 60 96 99 94 69 64 89
14 14 郑正 90 84 82 62 67 82 88 71 65
15 15 王乃 93 96 60 79 86 95 89 61 65
16 16 李寸 94 91 62 71 77 88 61 94 87
17 17 郑之 96 97 96 74 70 70 72 78 73
18 18 钱口 96 80 98 69 70 66 73 70 69
19 19 孙寸 96 81 70 97 74 92 64 94 87
20 20 吴儿 98 85 71 96 72 83 61 97 98
21 21 李木 94 82 69 71 88 92 93 92 76
22 22 赵主 95 80 83 80 63 94 76 67 75
23 23 钱巨 93 96 98 72 80 84 86 98 96
24 24 郑电 99 95 63 97 98 92 60 90 79
25 25 赵工 99 86 60 83 86 97 80 98 80
26 26 李方 91 83 85 75 76 85 74 87 76
27 27 李门 90 89 64 76 75 89 75 76 72
28 28 李几 96 82 70 88 79 96 60 85 61
29 29 赵夫 94 94 68 98 95 85 65 98 63
30 30 吴井 92 89 86 79 78 68 98 78 73
31 31 郑天 91 85 97 84 64 93 90 97 93
32 32 孙计 96 84 74 91 85 64 69 64 66
33 33 郑尺 99 84 93 88 99 87 76 80 85
34 34 孙友 98 95 75 85 94 89 69 74 82
35 35 郑中 96 81 88 66 68 71 88 83 63
36 36 赵页 98 97 63 66 71 98 97 63 60
37 37 郑户 91 88 68 73 76 81 87 87 89
38 38 王了 95 83 64 94 89 71 96 85 76
39 39 赵爪 92 92 88 83 81 98 81 97 63
40 40 吴又 99 99 71 61 90 60 65 74 77
41 41 钱化 93 92 63 82 86 82 88 96 88
42 42 吴不 94 83 75 90 71 91 84 99 83
43 43 吴伏 91 84 66 93 62 88 78 81 68
44 44 王贝 92 93 75 86 70 84 84 84 64
45 45 李气 97 99 72 60 69 68 67 74 75
46 46 李田 91 90 84 71 79 80 91 65 66
47 47 李下 98 81 65 92 72 65 72 64 77
48 48 李匕 90 82 96 99 87 88 88 64 95
49 49 李心 99 97 87 72 71 63 98 75 78
12.pandas 读取与写入文件相关推荐
- go语言逐行读取和写入文件
前言 前面一篇博客讲到nodejs使用readline逐行读取和写入文件 今天使用go语言实现从输入文件中读取每行数据,然后将每行字段组合成SQL插入脚本,然后逐行写入另外一个空白文件中. tb_pa ...
- python读取写入文件_Python读取和写入文件
1 从文件中读取数据 1.1 读取整个文件 创建名为test的txt文本文件,添加内容如下所示: 1234567890 2345678901 3456789012 实现代码: with open('t ...
- pandas读取多个文件内容为dataframe、并合并为一个dataframe、pandas创建仅有列标签而内容为空的dataframe
pandas读取多个文件内容为dataframe.并合并为一个dataframe.pandas创建仅有列标签而内容为空的dataframe 目录
- sublime python3中读取和写入文件时如何解决编码问题
sublime python3中读取和写入文件时如何解决编码问题 参考文章: (1)sublime python3中读取和写入文件时如何解决编码问题 (2)https://www.cnblogs.co ...
- java写入文件编码格式为ansi_Java读取、写入文件如何解决乱码问题
读取文件流时,经常会遇到乱码的现象,造成乱码的原因当然不可能是一个,这里主要介绍因为文件编码格式而导致的乱码的问题.首先,明确一点,文本文件与二进制文件的概念与差异. 文本文件是基于字符编码的文件,常 ...
- Flutter进阶—读取与写入文件
Flutter使用path_provider插件读取与写入文件,path_provider插件提供了一种平台无关的方法来访问设备文件系统上常用的位置.该类目前支持访问两个文件系统位置: 临时目录:系统 ...
- 读取和写入文件的最简单方法
本文翻译自:Easiest way to read from and write to files There are a lot of different ways to read and writ ...
- pandas玩转excel-> (2)如何利用pandas读取excel数据文件
pandas玩转excel-> (2)如何利用pandas读取excel数据文件 import pandas as pd #将excel文件读到内存中,形成dataframe,并命名为peopl ...
- nodejs:fs (内置模块)读取和写入文件
node fs (内置模块)读取和写入文件 const fs = require("fs"); //异步读取文件 fs.readFile("data.txt", ...
最新文章
- C++中的 istringstream
- 详解这场图片分类赛baseline,赢取官方人才认证+奖金
- 《Redis官方文档》用Redis构建分布式锁
- cmd应用基础 扫盲教程
- python按条件拆分列表元素_如何通过在python中拆分列表元素来创建列表?
- find查找所有php,linux中的find命令—查找文件名
- 前端学习总结——CSS布局方式之传统布局
- 日期格式化为yyyymmdd_Excel小技巧——如何将多行日期快速转换为数字文本
- Linux基础笔记1
- 触控事件MotionEvent
- k8s上部署java应用(activiti)实践
- 【PMP认证考试之个人总结】第 3 章 项目整合管理
- 关于 笔记本换掉光驱加装全新SSD以及win10系统无损迁移到SSD 详细教程
- linux文件管理ppt,Linux操作系统_文件管理2.ppt
- 面向未来的大数据核心技术都有什么?
- 解决VMware虚拟机宿主机与虚拟机通讯慢
- 一文读懂javascript深拷贝与浅拷贝
- 什么相片可以两张弄成一张_在PS内如何将两张照片合成一张
- php不能撤销,word2010突然无法撤销怎么解决
- (附源码)php柘城县农产品销售网站 毕业设计 020832
热门文章
- Julia中从Git时出现超时问题的解决方法---(例如:安装GR、Rmath一直超时)
- st-link v2怎么连接_固件升级:BOOX Nova\Note\Max2电纸书V2.1.1版固件发布
- 平面设计【PS】汉堡寿司横幅PSD分层模版素材
- JQuery Validate(1)---电话号码与邮箱验证
- 怎么去搭建聚合支付系统比较划算
- 恩兔NS-1刷ARMBIAN教程
- 关于GLSL的gl_FragCoord、gl_FragDepth以及深度计算
- 2023轻薄投影仪首选:极米Z6X Pro入手超值!
- 初中级程序员进阶高级程序员,必须要了解的设计模式(45种设计模式)
- BeanPostProcessor妙用(转载)