python对csv文件的操作

12 篇文章 1 订阅

一.pandas模块

读取csv文件:

1. 读取csv基本信息, 打印行列信息和量纲信息

"""
1. 读取csv基本信息, 打印行列信息和量纲信息
"""
import pandas as pd

# 以逗号为分隔符, 指定第一行为表头
df = pd.read_csv('高校信息.csv')

# 打印行列信息
print(df.info())

# 打印数字类型的量纲统计信息
print(df.describe())

2. 读取 csv 数据信息, 返回 DataFrame 类型数据, 缩略式的展示

"""
2. 读取 csv 数据信息, 返回 DataFrame 类型数据, 缩略式的展示
"""
import pandas as pd

# 以逗号为分隔符, 不指定表头, 则以数字作为表头打印
df = pd.read_csv('高校信息.csv', sep=',', header=None)

print(df)

3. 读取 csv 数据信息, 显示所有行列

"""
3. 读取 csv 数据信息, 显示所有行列
"""
import pandas as pd

# 以逗号为分隔符, 指定第一行为表头
df = pd.read_csv('高校信息.csv', sep=',', header=0)

print(type(df.to_string()))

4. 读取前几行数据

"""
4. 读取前几行数据
"""
import pandas as pd

# 以逗号为分隔符, 指定第一行为表头
df = pd.read_csv('高校信息.csv', sep=',', header=0)

# 读取前10行数据
print(df.head(10).to_string())

5. 读取末尾几行数据

"""
5. 读取末尾几行数据
"""
import pandas as pd

# 以逗号为分隔符, 指定第一行为表头
df = pd.read_csv('高校信息.csv', sep=',', header=0)

# 读取前10行数据, 不填则默认为5行
print(df.tail(10).to_string())

6. 以指定列为列标签

"""
6. 以指定列为列标签
"""
import pandas as pd

# 以逗号为分隔符, 指定第一行为表头, 指定 院校名称为 列标签
df = pd.read_csv('高校信息.csv', sep=',', header=0, index_col='院校名称')

# 读取前10行数据
print(df.head(5))

# 以逗号为分隔符, 指定第一行为表头, 指定 院校名称和院校类型 为列标签
df = pd.read_csv('高校信息.csv', sep=',', header=0, index_col=['院校名称', '院校类型'])

# 读取前10行数据
print(df.head(5))

7. 读取 csv 数据信息, 并指定类型, 防止出现将整形数字转为浮点型

"""
7. 读取 csv 数据信息, 并指定类型, 可以防止出现将整形数字转为浮点型
"""
import pandas as pd

# 以指定列代替索引, 这样就可以不打印前面的索引数字了, 但是这时必须指定表头
df = pd.read_csv('高校信息.csv', sep=',', header=0, index_col='序号', dtype=object)

print(df.head(10))

8. 读取 csv 数据信息, 并遍历数据

"""
8. 读取 csv 数据信息, 并遍历数据
"""
import pandas as pd


# 以逗号为分隔符, 不指定表头, 则实际表头参与遍历, 指定后, 则不参与遍历
# 这样打印会打印前面的索引, 对于没有id的csv表格, 这个很好用
df = pd.read_csv('高校信息.csv', sep=',', header=None)

for i in df.itertuples():
    print(list(i))

9. 读取 csv 数据信息, 并遍历数据, 不打印索引

"""
9. 读取 csv 数据信息, 并遍历数据, 不打印索引
"""
import pandas as pd

# 以指定列代替索引, 这样就可以不打印前面的索引数字了, 但是这时必须指定表头
df = pd.read_csv('高校信息.csv', sep=',', header=0, index_col='序号')

for i in df.itertuples():
    print(list(i))

10. 读取 csv 数据信息, 将指定列转为list

"""
10. 读取 csv 数据信息, 将指定列转为list
"""
import pandas as pd
import numpy as np

# 以逗号为分隔符, 不指定表头, 则以数字作为表头打印
df = pd.read_csv('高校信息.csv', sep=',', header=0)

# print(np.array(df["院校名称"]).tolist())

print(np.array(df[["院校名称", "办学类型"]]).tolist())

11. 读取 csv 数据信息, 打印指定列

"""
11. 读取 csv 数据信息, 打印指定列
"""
import pandas as pd

# usecols 可以读取指定列, 但是如果指定了某一字段为列索引, 该列必须出现在 usecols 中
df = pd.read_csv('高校信息.csv', sep=',', header=0, index_col='序号', usecols=[0, 1])

for i in df.itertuples():
    print(list(i))

12. 读取 csv 数据信息, 对指定列做统计

"""
12. 读取 csv 数据信息, 对指定列做统计
"""
import pandas as pd
import numpy as np

# 以逗号为分隔符, 不指定表头, 则以数字作为表头打印
df = pd.read_csv('高校信息.csv', sep=',', header=0)

print(df.info())
# print(np.array(df["院校名称"]).tolist())

print(np.array(df[["院校名称", "办学类型"]]).tolist())

写入csv文件:

1. 写入 csv 数据信息, 覆盖老数据

"""
1. 写入 csv 数据信息, 覆盖老数据
"""
import pandas as pd

df = pd.read_csv('高校信息.csv', sep=',', header=0, dtype=object)

header = df.head(10)

# index = None 参数为去掉列索引
header.to_csv('test.csv', index=None)

2. 写入 csv 数据信息, 追加形式写数据

"""
2. 写入 csv 数据信息, 追加形式写数据
"""
import pandas as pd

df = pd.read_csv('高校信息.csv', sep=',', header=0, dtype=object)

header = df.head(10)

# mode = "a" 以追加的形式写数据
header.to_csv('test.csv', index=None, mode='a')

3. 将 list 数据写入 csv, 每个list为每个列数据

"""
3. 将 list 数据写入 csv, 每个list为每个列数据

{
  "name": ["小红","小王","小张","小李"],
  "sex": ["女","男","男","女"],
  "age": [18,16,17,20]
}
"""
from pandas.core.frame import DataFrame

name = ["小红", "小王", "小张", "小李"]
sex = ["女", "男", "男", "女"]
age = [18, 16, 17, 20]
student = {"name": name, "sex": sex, "age": age}

# 将 json 转为 pandas 中的 DataFrame 类型
data = DataFrame(student)

data.to_csv('test.csv', index=None)

4. 将 list 写入 csv, 每个list的个数, 可以不相等

"""
4. 将 list 数据写入 csv, 每个list为每行数据, 每个list的个数, 可以不相等
"""
from pandas.core.frame import DataFrame

student = [["姓名", "性别", "年龄"],
           ["小红", "女", 18],
           ["小王", "男", 16],
           ["小张", "男", 17],
           ["小李", "女"]]

# 将 list 转为 pandas 中的 DataFrame 类型
data = DataFrame(student)

# index=None, header=None 表示不要列与行索引
data.to_csv('test.csv', index=None, header=None)

# index=None, header=0 表示指定第一行为表头
data.to_csv('test.csv', index=None, header=0)

二.csv模块

1.按行读取csv

"""
按行读取csv
"""
import csv

# 当出现比较大的字段时
csv.field_size_limit(500 * 1024 * 1024)

csv_file = open("高校信息.csv", encoding='utf-8')
csv_reader_lines = csv.reader(csv_file)


for i in csv_reader_lines:
    print(i)

2.按行写入csv

import csv

file_object = open("test.csv", 'w', newline='')

writer = csv.writer(file_object)

data_list = [["a", "b", "c"], ["d", "e", "f", "g"], ["h", "i", "j", "k", "l"]]

for row in data_list:
    writer.writerow(row)

file_object.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纯洁的小魔鬼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值