AI智能
改变未来

python-pandas模块10-pandas读取与写入文件


pandas模块-pandas读取与写入文件

导入模块:

import numpy as npimport pandas as pdfrom pandas import Series,DataFramefrom numpy import nan as NA# matplotlib做图模块import matplotlib.pyplot as plt# 处理中文正常显示plt.rcParams[\'font.sans-serif\'] = [\'Microsoft YaHei\']

这里是下面会用到的csv素材(e…实在不知道怎么往博客里导入csv文件,就在这里放截图吧)


ex1.csv

ex2.csv

ex3.csv

ex4.csv

ex5.csv

csv_mindex.csv

1.读取CSV

pd.read_csv( ) 默认 逗号为分隔符,默认 首行作为 columnsName

pd.read_csv(\'data/ex1.csv\')


pd.read_table() 也可以读取,但是要指定分隔符参数sep=’ \’

pd.read_table(\'data/ex1.csv\',sep=\',\')


读取没有明显列名称的文件,不需要让首行作为列,用参数 header=None

pd.read_csv(\'data/ex2.csv\',header=None)

自定义列名称 ,参数 names=[ ],names 给几列,就会从最后向前读几列数据,剩下的都是 index,超出列就是 nan

pd.read_csv(\'data/ex2.csv\',names=[\'aa\',\'bb\',\'cc\',\'dd\',\'message\',\'ee\'])

设置 行索引 index_col = \’某个列name’

pd.read_csv(\'data/ex2.csv\',names=[\'aa\',\'bb\',\'cc\',\'dd\',\'message\']),index_col=\'message\'

多列作为行索引

pd.read_csv(\'data/csv_mindex.csv\',index_col=[\'key1\',\'key2\'])

读取 使用不规则的分隔符的 数据 ,使用 sep= ’ ’ ,使用正则表达式作为分隔符 ,不需要导入 re 模块。直接写正则字符串

pd.read_csv(\'data/ex3.txt\',sep=\'\\s+\')

使用 skiprows = [] 跳过一些行

pd.read_csv(\'data/ex4.csv\',skiprows=[0,2,3])

comment=’#’ 指定 # 开头的是注释,不用读取

pd.read_csv(\'data/ex4.csv\',comment=\'#\')

在读取的所有列中需要让xxx值变为nan,使用参数 na_values=[ ] ,空值 与 NA 字符默认为NaN

pd.read_csv(\'data/ex5.csv\',na_values=[1,2,\'two\'])

在读取的指定列中需要让xxx值变为nan,用字典来匹配 ,某个列的一个值或多个值

# 先创建一个字典nans = {\'something\':\'two\' ,\'message\':[\'foo\',\'world\']}pd.read_csv(\'data/ex5.csv\' ,na_values=nans)

2.写入CSV

创建一个DataFrame,模拟一个成绩表,各科成绩有重复。

names = \'尺,寸,人,下,匕,卜,之,田,丫,乃,贝,井,工,几,女,巨,爪,火,了,方,木,中,寸,石,户,友,夫,不,可,主,又,丑,巾,口,电,门,术,儿,羊,丁,心,天,化,气,正,页,兄,伏,大,计\'.split(\',\')df10 = DataFrame({\'语文\':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),\'历史\':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


保存 , 默认行列索引都存进去

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 = ‘xx’ 将 nan 换成xx进行存储,默认是 空

df10.to_csv(\'成绩3.csv\',na_rep=\'空\')

预览存储效果:sys.stdout

导入模块:

import sys

以竖线为分隔符的预览效果

df10.to_csv(sys.stdout,sep=\'|\',na_rep=\'空空如也\')

3.EXCEL的存储和读取

存储,前提需要先安装 openpyxl模块,不需要导入

data.to_excel(\'成绩.xlsx\')

# startrow=1,从第一行开始写(下标为1的行)data.to_excel(\'成绩1.xlsx\',startrow=1 ,encoding=\'utf-8\')


读取excel ,参数同 读取 csv的参数 ,多了个 sheet_name表名,需要安装xlrd模块,不需要导入

pd.read_excel(\'成绩.xlsx\')

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » python-pandas模块10-pandas读取与写入文件