一.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()