当前位置:   article > 正文

使用 pandas 处理 CSV 文件_pandas csv

pandas csv

CSV文件也称为逗号分隔值文件格式,它以纯文本形式存储表格数据。CSV是一种通用的、相对简单的文件格式,在商业和科学中被广泛应用。

在这里插入图片描述


一、读取CSV文件

read_csv()read_table() 的主要参数如下:

  • path:表示文件系统位置、URL、文件型对象的字符串。
  • sepdelimiter:对每行各个字段进行拆分的字符序列正则表达式
  • header:用作列名的行号,默认为 0(第一行),如果没有header行就应该设置为 None
  • index_col:行索引的列编号或列名,可以是单个名称/数字或由多个名称/数字组成的列表(层次化索引)。
  • names:用于结果的列名列表,与 header=None 结合使用。
  • skiprows:需要忽略的行数(从文件开始处算起),或需要跳过的行号列表(从0开始)。
  • na_values:一组用于替换 NA 的值。
  • comment:用于将注释信息从行尾拆分出去的字符。
  • verbose:打印各种解析器输出信息。
  • encoding:用于unicode的文本编码格式。
  • squeeze:如果数据经解析后仅含一列,则返回Series。
  • thousands:千分位分隔符。

通过cat命令查看test.csv文件的内容:

os.system("cat ./test.csv")
  • 1
name,position,camp
Ezreal,ADC,Piltover
Vi,JUN,Piltover
Jayce,TOP,Piltover
Zed,MID,Ionia
Xayah,ADC,Ionia
Thresh,SUP,Shadow Isles
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

使用 read_csv() 函数可以将CSV文件读入一个DataFrame中:

test_csv = pandas.read_csv("./test.csv")
print(test_csv)
  • 1
  • 2
     name position          camp
0  Ezreal      ADC      Piltover
1      Vi      JUN      Piltover
2   Jayce      TOP      Piltover
3     Zed      MID         Ionia
4   Xayah      ADC         Ionia
5  Thresh      SUP  Shadow Isles
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

也可以使用 read_table() 函数读取,但需要通过 sep 参数指定分隔符:

test_csv = pandas.read_table("./test.csv", sep=",") # sep也可以是一个正则表达式
print(test_csv)
  • 1
  • 2
     name position          camp
0  Ezreal      ADC      Piltover
1      Vi      JUN      Piltover
2   Jayce      TOP      Piltover
3     Zed      MID         Ionia
4   Xayah      ADC         Ionia
5  Thresh      SUP  Shadow Isles
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在源文件没有列名时,可以通过 header 其分配缺省列名,也可以通过 names 自定义列名:

test_csv = pandas.read_csv("./test.csv", header=None)
print(test_csv)
print() # 换行

test_csv = pandas.read_csv("./test.csv", names=["first", "second", "third"])
print(test_csv)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
        0         1             2
0    name  position          camp
1  Ezreal       ADC      Piltover
2      Vi       JUN      Piltover
3   Jayce       TOP      Piltover
4     Zed       MID         Ionia
5   Xayah       ADC         Ionia
6  Thresh       SUP  Shadow Isles

    first    second         third
0    name  position          camp
1  Ezreal       ADC      Piltover
2      Vi       JUN      Piltover
3   Jayce       TOP      Piltover
4     Zed       MID         Ionia
5   Xayah       ADC         Ionia
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

通过 index_col 可以将指定列作为DataFrame的索引:

test_csv = pandas.read_csv("./test.csv", index_col="name")
print(test_csv)
  • 1
  • 2
       position          camp
name                         
Ezreal      ADC      Piltover
Vi          JUN      Piltover
Jayce       TOP      Piltover
Zed         MID         Ionia
Xayah       ADC         Ionia
Thresh      SUP  Shadow Isles
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

通过 index_col 也可以定义层次化索引:

test_csv = pandas.read_csv("./test.csv", index_col=["camp", "position"])
print(test_csv)
  • 1
  • 2
                         name
camp         position        
Piltover     ADC       Ezreal
             JUN           Vi
             TOP        Jayce
Ionia        MID          Zed
             ADC        Xayah
Shadow Isles SUP       Thresh
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

通过 skiprows 跳过文件的指定行:

test_csv = pandas.read_csv("test.csv", skiprows=[1, 2, 3])
print(test_csv)
  • 1
  • 2
     name position          camp
0     Zed      MID         Ionia
1   Xayah      ADC         Ionia
2  Thresh      SUP  Shadow Isles
  • 1
  • 2
  • 3
  • 4

通过 nrows 可以指定每次读取的行数:

test_csv = pandas.read_csv("test.csv", nrows=3)
print(test_csv)
  • 1
  • 2
     name position      camp
0  Ezreal      ADC  Piltover
1      Vi      JUN  Piltover
2   Jayce      TOP  Piltover
  • 1
  • 2
  • 3
  • 4

二、写入CSV文件

生成一个DataFrame:

data = {"name": ["Iowa", "Cleveland", "Baltimore", "Worcester", "Lexington"],
        "type": ["BB", "CL", "CL", "CL", "CV"],
        "level": ["9", "8", "8", "9", "8"]}
frame = pandas.DataFrame(data)
print(frame)
  • 1
  • 2
  • 3
  • 4
  • 5
        name type level
0       Iowa   BB     9
1  Cleveland   CL     8
2  Baltimore   CL     8
3  Worcester   CL     9
4  Lexington   CV     8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

利用DataFrame的 to_csv() 方法,我们可以将数据写入到一个以逗号分隔的文件中:

frame.to_csv("./ship.csv", index=False)
os.system("cat ./ship.csv")
  • 1
  • 2
name,type,level
Iowa,BB,9
Cleveland,CL,8
Baltimore,CL,8
Worcester,CL,9
Lexington,CV,8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/643697
推荐阅读
相关标签
  

闽ICP备14008679号