数据分析(3) Pandas数据读取

  通过Pandas提供的read_xxx相关的函数可以读取文件中的数据,并形成DataFrame常用的数据读取方法为:read_csv( )read_excel( ),主要可以读取文本类型的数据

1 读取格式

  pd.read_csv ( filepath, encoding, sep, header, names, usecols, index_col, skiprows, nrows……)

(1)filepath:文件存储路径,可以用r‘ ‘进行非转义限定,路径最好是纯英文(文件名也是),不然会经常碰到编码不对问题,最方便是直接将文件存储在Pandas默认的路径下,则直接输入文件名即可

  (2)encodingpandas默认编码是utf-8,如果同样读取默认uft-8txt或者json格式,则可以忽略这个参数,如果是CSV,且数据中有中文时,则要指定encoding=‘gbk‘

  (3)sep:指定分割符形式,CSV默认逗号分割,可以忽略这个参数,如果是其它分割方式,则要填写。默认为单字符,若为双字符分割,需要增加参数engine=‘python‘

import pandas as pd
df1 = pd.read_csv(‘test1.txt‘)
df2 = pd.read_csv(‘test2.txt‘, sep=‘;‘)
df3 = pd.read_csv(‘test3.txt‘, sep=‘::‘, engine=‘python‘)
print(‘===== 逗号分割 =====\n‘, df1)
print(‘===== 分号分割 =====\n‘, df2)
print(‘===== 双冒号分割 =====\n‘, df3)# ===== 逗号分割 =====
#      name  age  scores
# 0  gerry   18    98.5
# 1    tom   21    78.2
# 2   lili   24    98.5
# 3   john   20    89.2
# ===== 分号分割 =====
#      name  age  scores
# 0  gerry   18    98.5
# 1    tom   21    78.2
# 2   lili   24    98.5
# 3   john   20    89.2
# ===== 双冒号分割 =====
#      name  age  scores
# 0  gerry   18    98.5
# 1    tom   21    78.2
# 2   lili   24    98.5
# 3   john   20    89.2

  (4)header指定第一行是否是列名,通常有三种用法:忽略或header=0(表示数据第一行为列名)header=None(表明数据没有列名),常与names搭配使用

  (5)names:指定列名,通常用一个字符串列表表示,当header=0时,用names可以替换掉数据中的第一行作为列名,如果header=None,用names可以增加一行作为列名,如果没有header参数时,用names会增加一行作为列名,原数据的第一行仍然保留

df4 = pd.read_csv(‘test2.txt‘, sep=‘;‘, header=None)
df5 = pd.read_csv(‘test2.txt‘, sep=‘;‘, header=None, names=[‘A‘, ‘B‘, ‘C‘])
print(‘===== 默认列名保留第一行 =====\n‘, df4)
print(‘===== 指定列名保留第一行 =====\n‘, df5)# ===== 默认列名保留第一行 =====
#         0    1       2
# 0   name  age  scores
# 1  gerry   18    98.5
# 2    tom   21    78.2
# 3   lili   24    98.5
# 4   john   20    89.2
# ===== 指定列名保留第一行 =====
#         A    B       C
# 0   name  age  scores
# 1  gerry   18    98.5
# 2    tom   21    78.2
# 3   lili   24    98.5
# 4   john   20    89.2

  (6)usecols:一个字符串列表,可以指定读取的列名

  (7)index_col:一个字符串列表,指定哪几列作为索引

  (8)skiprows:跳过多少行再读取数据,通常是数据不太干净,需要去除掉表头才会用到

  (9)nrows:仅读取多少行,后面的处理也都仅限于读取的这些行

2 写入格式

  DataFrame.to_csv(‘filename‘)

【其他数据格式持续补充......】