Pandas IO工具

Pandas I/O API是一套像pd.read_csv()一样返回Pandas对象的顶级读取器函数。

读取文本文件(或平面文件)的两个主要功能是read_csv()read_table()。它们都使用相同的解析代码来智能地将表格数据转换为DataFrame对象 -

pandas.read_csv(filepath_or_buffer, sep=',', delimiter=None, header='infer',
names=None, index_col=None, usecols=None)

形式2-

pandas.read_csv(filepath_or_buffer, sep='\t', delimiter=None, header='infer',
names=None, index_col=None, usecols=None)

以下是csv文件数据的内容 -

S.No,Name,Age,City,Salary
1,Tom,28,Toronto,20000
2,Lee,32,HongKong,3000
3,Steven,43,Bay Area,8300
4,Ram,38,Hyderabad,3900

将这些数据保存为temp.csv并对其进行操作。

S.No,Name,Age,City,Salary
1,Tom,28,Toronto,20000
2,Lee,32,HongKong,3000
3,Steven,43,Bay Area,8300
4,Ram,38,Hyderabad,3900

read.csv

read.csv从csv文件中读取数据并创建一个DataFrame对象。

import pandas as pd
df=pd.read_csv("temp.csv")
print (df)

执行上面示例代码,得到以下结果 -

   S.No    Name  Age       City  Salary
    Tom   28    Toronto   20000
    Lee   32   HongKong    3000
 Steven   43   Bay Area    8300
    Ram   38  Hyderabad    3900

自定义索引

可以指定csv文件中的一列来使用index_col定制索引。

import pandas as pd

df=pd.read_csv("temp.csv",index_col=['S.No'])
print (df)

执行上面示例代码,得到以下结果 -

        Name  Age       City  Salary
S.No                                
       Tom   28    Toronto   20000
       Lee   32   HongKong    3000
    Steven   43   Bay Area    8300
       Ram   38  Hyderabad    3900

转换器
dtype的列可以作为字典传递。

import pandas as pd
import numpy as np
df = pd.read_csv("temp.csv", dtype={'Salary': np.float64})
print (df.dtypes)

执行上面示例代码,得到以下结果 -

S.No        int64
Name       object
Age         int64
City       object
Salary    float64
dtype: object

默认情况下,Salary列的dtypeint,但结果显示为float,因为我们明确地转换了类型。

因此,数据看起来像浮点数 -

  S.No   Name   Age      City    Salary
    Tom   28    Toronto   20000.0
    Lee   32   HongKong    3000.0
 Steven   43   Bay Area    8300.0
    Ram   38  Hyderabad    3900.0

header_names
使用names参数指定标题的名称。

import pandas as pd
import numpy as np

df=pd.read_csv("temp.csv", names=['a', 'b', 'c','d','e'])
print (df)

执行上面示例代码,得到以下结果 -

      a       b    c          d       e
 S.No    Name  Age       City  Salary
    Tom   28    Toronto   20000
    Lee   32   HongKong    3000
 Steven   43   Bay Area    8300
    Ram   38  Hyderabad    3900

观察可以看到,标题名称附加了自定义名称,但文件中的标题还没有被消除。 现在,使用header参数来删除它。

如果标题不是第一行,则将行号传递给标题。这将跳过前面的行。

import pandas as pd
import numpy as np

df=pd.read_csv("temp.csv",names=['a','b','c','d','e'],header=0)
print (df)

执行上面示例代码,得到以下结果 -

   a       b   c          d      e
    Tom  28    Toronto  20000
    Lee  32   HongKong   3000
 Steven  43   Bay Area   8300
    Ram  38  Hyderabad   3900

skiprows

skiprows跳过指定的行数。参考以下示例代码 -

import pandas as pd
import numpy as np

df=pd.read_csv("temp.csv", skiprows=2)
print (df)

执行上面示例代码,得到以下结果 -

   2     Lee  32   HongKong  3000
 Steven  43   Bay Area  8300
    Ram  38  Hyderabad  3900

上一篇:Pandas可视化

下一篇:Pandas稀疏数据

关注微信小程序
程序员编程王-随时随地学编程

扫描二维码
程序员编程王

扫一扫关注最新编程教程