python-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
python-pandas-读取与写入文件相关推荐
- python自动化读取和写入文件_基于Python的接口自动化实战-基础篇之读写配置文件...
引言 在编写接口自动化测试脚本时,有时我们需要在代码中定义变量并给变量固定的赋值.为了统一管理和操作这些固定的变量,咱们一般会将这些固定的变量以一定规则配置到指定的配置文件中,后续需要用到这些变量和变 ...
- 12.pandas 读取与写入文件
import numpy as np import pandas as pd from pandas import Series,DataFrame from numpy import nan as ...
- python输出csv文件-Python之读取与写入CSV文件
原标题:Python之读取与写入CSV文件 本文作者:闫续文 文字编辑:张梦婷 技术总编:张学人 有问题,不要怕!访问 CSV(Comma-Separated Values)格式是电子表格和数据库最常 ...
- Python+Pandas读取Excel文件分析关系最好的两个演员
董老师又双叒叕送书啦,6本<Python程序设计基础与应用(第2版)> 推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国 ...
- Python+pandas读取Excel文件统计最受欢迎的前3位演员
推荐教材:<Python程序设计基础与应用>(ISBN:9787111606178),董付国,机械工业出版社,2018.8出版,2021.3第11次印刷 图书详情: 配套资源: 用书教师可 ...
- python pandas读取csv文件指定行_python pandas获取csv指定行 列的操作方法
python pandas获取csv指定行 列的操作方法 pandas获取csv指定行,列 house_info = pd.read_csv('house_info.csv') 1:取行的操作: ho ...
- Python Pandas读取文件
Python Pandas读取文件 当使用 Pandas 做数据分析的时,需要读取事先准备好的数据集,这是做数据分析的第一步.Panda 提供了多种读取数据的方法: read_csv() 用于读取文本 ...
- python pandas读取excel文件
python pandas读取excel文件 data=pd.read_excel('C:\Users\86188\python\dummy.xlsx') 会报错:SyntaxError: (unic ...
- python读取写入文件_Python读取和写入文件
1 从文件中读取数据 1.1 读取整个文件 创建名为test的txt文本文件,添加内容如下所示: 1234567890 2345678901 3456789012 实现代码: with open('t ...
- python pandas读取txt文件_python Pandas 读取txt表格的实例
运行环境 Python 2.7 操作实例 1.原始文本格式:空格分隔的txt,例如 2016-03-22 00:06:24.4463094 中文测试字符 2016-03-22 00:06:32.456 ...
最新文章
- 详解AI加速器(最终篇):给想进入赛道的玩家一些建议
- linux cpu平均利用率st,理解 CPU 利用率
- 启动nginx服务提示 nginx: [emerg] still could not
- linux内核实验平台搭建,搭建自己的Linux实验系统(一)
- 【Linux】内核态和用户态
- struts -Tiles介绍
- python数据分析师书籍_如何自学成为数据分析师
- (软件工程复习核心重点)第六章实现和测试-第五节:确认测试
- php提前终止,由于最大执行时间致命错误,PHP cron作业提前终止
- DBCC CHECKDB
- 最小二乘法拟合圆心和半径 python实现
- 搜狗输入法,输英语单词自动提示
- 多通道国产源表之VCSEL老化测试
- Mac电脑使用:Mac电脑查看本机的IP和公网IP的方法
- 用幂律分布研究工资收入
- MATLAB中柱形图的绘制
- 字典生成----在线密码破解工具hydra和medusa的使用
- 某鱼app获取Cookie(token)
- linux笔记本安装双显卡驱动(intel+nvidia)
- 利用iPS细胞筛选新药研究进展
热门文章
- 关于控件注册和使用许可问题的解决办法
- 华为手机安装Goole play教程及安装包
- qrcode生成一个带有图片的二维码
- 分享深入学习MongoDB pdf版
- PLC 变频器、触摸屏综合实训平台
- 权限管理系统设计——入门(一)
- word中,去表格格式,把表格转换为文本的方法
- unigui点线动画连线
- dpo指标详解买入绝技_DPO指标,DPO指标详解,DPO是什么意思? - 股票入门
- 英文版系统远程桌面无法连接到远程计算机,windows server 2016远程桌面进去,英文系统修改语言...