pandas中的IO读取和写入,常用读取函数由read_table,read_csv,read_excel,而写入函数有,to_csv(),to_excel()
pandas读取函数
读取函数具有的公共的参数
filepath_or_buffer
sep: str | None |
header: int | Sequence[int] | None | Literal["infer"] = "infer" names: Sequence[Hashable] | None | lib.NoDefault = lib.no_default index_col: IndexLabel | Literal[False] | None = None
这5个参数分别指:读取文件的路径;分割符;是否将数据第一行所为列索引;手动置顶的列索引;设置一列作为行索引
pd.read_csv()及pd.read_table()
pd.read_csv
这两个函数都是常用的pandas读取文件的函数,区别只有一处,就是用于划分每行数据的分割符不同,由于csv文件的默认分割符为‘,’所以pd.read_csv()默认的分割符为‘,’而pd.read_table()默认的分割符为'\t',用于指定分割符的参数为sep
比如当前目录下有一个名为csv文件.csv,内容如下
lucy,19,北京 mery,20,上海 tom,22,北京
这里我们使用pd.read_csv()进行文件的读取
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
if __name__ == '__main__':
data = pd.read_csv('csv文件.csv',header=None)
print(data)
# 0 1 2
# 0 lucy 19 北京
# 1 mery 20 上海
# 2 tom 22 北京
如果将文件的分割符进行修改
lucy 19 北京 mery 20 上海 tom 22 北京
可以看到这不是一个标准的csv文件,因为这里的分割符有空格,也有两个连续的空格
所以这里可以使用正则匹配中的表达式‘\s+’来匹配连续的空字符
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
if __name__ == '__main__':
data = pd.read_csv('csv文件.csv',sep = '\s+',header=None)
print(data)
# 0 1 2
# 0 lucy 19 北京
# 1 mery 20 上海
# 2 tom 22 北京
pd.read_table()
由于read_table()中的sep参数可以手动设置,所以在实际操作中可以通过改变sep参数的值对具有不同分割符的文件进行的读取,这里将csv文件改为间隔符为\t
lucy 19 北京 mery 20 上海 tom 22 北京
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
if __name__ == '__main__':
data = pd.read_table('csv文件.csv',header=None)
print(data)
# 0 1 2
# 0 lucy 19 北京
# 1 mery 20 上海
# 2 tom 22 北京
pd.read_excel()
pd.read_excel()相比前两个函数会多一个sheet_name参数,用于指定excel文件的sheet,sheet_name可以通过sheet名来指定,也可以通过索引指定,索引是从左到右的sheet为从0开始的整数索引
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
if __name__ == '__main__':
data = pd.read_excel('excel文件.xlsx',header=None,sheet_name=0)
print(data)
# 0 1 2
# 0 lucy 19 北京
# 1 mery 20 上海
# 2 tom 22 北京
这里读取的是第一章表sheet,索引为0
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
if __name__ == '__main__':
data = pd.read_excel('excel文件.xlsx',header=None,sheet_name='order')
print(data)
# 0 1 2
# 0 1 10001 14
# 1 2 10002 70
# 2 3 10003 36
# 3 4 10004 61
# 4 5 10005 11
# 5 6 10006 48
# 6 7 10007 37
# 7 8 10008 76
# 8 9 10009 41
# 9 10 10010 92
# 10 11 10011 58
这里通过指定sheet名为第二个sheet的名字order来读取ordersheet的内容
pandas写入函数
pandas的写入函数,常用的与read对应分别为to_csv()和to_excel()
现在演示将刚读取的order sheet写入csv文件,
如果使用to_csv默认的分割符会设置为','不过也可以进行sep参数的设置来更改
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
if __name__ == '__main__':
data = pd.read_excel('excel文件.xlsx',header=None,sheet_name='order')
data.to_csv('guoguo1.csv,index = False')
data.to_csv('guoguo.csv',sep='\t',index=False,header = False)
可以注意到这里还设置了两个参数,index和header,默认都为True,作用为是否将行索引和列索引写入文件