目录
读写文件的类型
Excel写
API
准备数据
1.直接写入(默认有索引和标题)
2.写入(去掉索引)
3.写入(去掉索引和标题)
4.写入(去掉索引和标题,指定表单信息)
Excel读
API
1.读(默认带有索引和标题)
2.读(指定索引项)
3.读(碰到无标题列和无索引列,指定索引列,标题列)
4.读(只要1,2,3列)
5.读(只读前两列)
6.读(跳过前两行)
CSV写
API
准备数据
1.写(默认是有标题行和索引列)
2.写(去掉索引列)
3.写(去掉标题和索引列)
4.写(去掉索引和标题,只要id列和name列)
5.写(去掉索引列和标题列,并且更换分隔符)
6.写(追加效果)
7.写(默认格式是复写)
CSV读
API
1.读(无索引列的文件)
2.读(有索引的文件)
3.读(指定索引列)
4.读(指定索引列,将birthday解析成日期类型)
5.读(指定索引列,指定非默认分隔符)
MySQL写
1.先在数据库中创建表
2.读取python上的表
3.创建数据库操作引擎对象并指定数据库
4.将数据写入MySQL数据库
MySQL读
1.导入相关库
2.通过表读
3.通过sql读
读写文件的类型
Excel写
API
-
excel_writer:指定要写入的 Excel 文件路径或ExcelWriter对象。例如:'output.xlsx'。
-
sheet_name:指定要写入的工作表名称。默认值为'Sheet1'。例如:sheet_name='MyData'。
-
index:布尔值,决定是否写入行索引。默认值为True,表示写入行索引。例如:index=False则不写入行索引。
-
columns:可选择要写入的列,可以是列名列表。默认值为写入所有列。例如:columns=['col1', 'col2']只写入指定的两列。
准备数据
准备数据(字典)
import pandas as pd
data = [
[1, '张三', '1999-3-10', 18],
[2, '李四', '2002-3-10', 15],
[3, '王五', '1990-3-10', 33],
[4, '隔壁老王', '1983-3-10', 40]
]
df = pd.DataFrame(data, columns=['id', 'name', 'birthday', 'age'])
df
1.直接写入(默认有索引和标题)
df.to_excel('../output/student.xls')
2.写入(去掉索引)
df.to_excel('../output/student1.xls', index=False)
3.写入(去掉索引和标题)
df.to_excel('../output/student_2.xls', index=False, header=False)
4.写入(去掉索引和标题,指定表单信息)
df.to_excel('../output/student_3.xls', index=False, header=False, sheet_name='学生信息')
Excel读
API
-
excel_writer:指定要写入的 Excel 文件路径或ExcelWriter对象。例如:'output.xlsx'。
-
sheet_name:指定要写入的工作表名称。默认值为'Sheet1'。例如:sheet_name='MyData'。
-
index:布尔值,决定是否写入行索引。默认值为True,表示写入行索引。例如:index=False则不写入行索引。
-
columns:可选择要写入的列,可以是列名列表。默认值为写入所有列。例如:columns=['col1', 'col2']只写入指定的两列。
1.读(默认带有索引和标题)
import pandas as pd
# 1 读(默认)
df = pd.read_csv("../output/student.csv")
df
2.读(指定索引项)
pd.read_excel("../output/student.xls",index_col=0)
3.读(碰到无标题列和无索引列,指定索引列,标题列)
pd.read_excel("../output/student_2.xls",header=None)
4.读(只要1,2,3列)
pd.read_excel("../output/student_2.xls",header=None, usecols=[1,2,3])
5.读(只读前两列)
pd.read_excel("../output/student_2.xls",index= None,header=None, nrows=2)
6.读(跳过前两行)
pd.read_excel("../output/student_2.xls",index_col= None,header=None,skiprows=2)
CSV写
API
-
sep:指定分隔符,默认为,。例如:sep=';'可以使用分号作为分隔符。
-
mode:指定文件打开模式,默认为'w'(写入模式)。如果要追加数据,可以使用'a'。
准备数据
# 1.1 准备数据(字典)
data = [
[1, '张三', '1999-3-10', 18],
[2, '李四', '2002-3-10', 15],
[3, '王五', '1990-3-10', 33],
[4, '隔壁老王', '1983-3-10', 40]
]
df = pd.DataFrame(data, columns=['id', 'name', 'birthday', 'age'])
df
1.写(默认是有标题行和索引列)
df.to_csv("../output/student_1.csv")
2.写(去掉索引列)
df.to_csv("../output/student_2.csv",index=False)
3.写(去掉标题和索引列)
df.to_csv("../output/student_5.csv",index=False,header = False)
4.写(去掉索引和标题,只要id列和name列)
df.to_csv("../output/student_4.csv",index=False,header = False,columns = ['id','name'])
5.写(去掉索引列和标题列,并且更换分隔符)
df.to_csv("../output/student_3.csv",index=False,header = False,sep = '*')
6.写(追加效果)
df.to_csv('../output/student_3.csv', index=False, header=False, columns=['id', 'name', 'age'], sep='*', mode='a')
注:在student_3.csv的基础上追加,
7.写(默认格式是复写)
df.to_csv('../output/student_3.csv', index=False, header=False, columns=['id', 'name', 'age'], sep='*', mode='w')
CSV读
API
-
sep:指定分隔符,默认为,。如果 CSV 文件使用其他分隔符,如制表符\t或分号;,可以通过这个参数指定。例如:sep=';'。
-
names:如果header=None,可以使用这个参数指定列名列表。例如:names=['col1', 'col2', 'col3']。
-
index_col:指定用作行索引的列号或列名。可以是整数、整数列表或None。如果是整数,该列为行索引;如果是列表,多个列被组合成一个层次化索引;如果是None,则不使用任何列作为行索引,行索引将是从 0 开始的整数。默认值为None。例如:index_col=0表示将第一列作为行索引。
-
usecols:指定要读取的列。可以是列名列表、整数列表或一个可调用对象,用于筛选列。例如:usecols=[0, 2]表示读取第一列和第三列。
-
skiprows:指定要跳过的行数。可以是整数、整数列表或可调用对象。例如:skiprows=2表示跳过前两行。
-
nrows:指定要读取的行数。例如:nrows=100表示读取前 100 行数据。
-
encoding:指定文件的编码方式。常见的编码有utf-8等。例如:encoding='utf-8-sig'。
1.读(无索引列的文件)
import pandas as pd
df = pd.read_csv("../output/student_2.csv")
df
2.读(有索引的文件)
df = pd.read_csv("../output/student_1.csv")
df
3.读(指定索引列)
df = pd.read_csv("../output/student_1.csv",index_col = 0)
df
4.读(指定索引列,将birthday解析成日期类型)
# 原列类型
df = pd.read_csv("../output/student_5.csv", header=None, names=['编号', '姓名', "出生日期", "年龄"])
df.info()
print('----------------')
# 改变后
df = pd.read_csv("../output/student_5.csv", header=None, names=['编号', '姓名', "出生日期", "年龄"], parse_dates=['出生日期'])
df.info()
5.读(指定索引列,指定非默认分隔符)
df = pd.read_csv("../output/student_3.csv", header=None, names=['编号', '姓名', "出生日期", "年龄"], parse_dates=['出生日期'], sep='*')
df
根据*分隔数据
MySQL写
目的是将python中的表写入MySQL中
1.先在数据库中创建表
drop database if exists test;
create database test char set utf8;
use test;
2.读取python上的表
import pandas as pd
from kafka import conn
# 读
df = pd.read_csv("../output/student.csv", index_col=0)
df
3.创建数据库操作引擎对象并指定数据库
# 连接
from sqlalchemy import create_engine
conn = create_engine("mysql+pymysql://root:123456@192.168.88.100:3306/test?charset=utf8")
4.将数据写入MySQL数据库
# 写
df.to_sql('student', con=conn, if_exists='replace', index=False)
但是此时birthday那一列是text格式
扩展:指定写入日期的格式是data
from sqlalchemy import types
dtype = {'birthday':types.Date}
df.to_sql('student_2', con=conn, if_exists='append', index=False, dtype=dtype)
MySQL读
1.导入相关库
import pandas as pd
from sqlalchemy import create_engine
2.通过表读
# 1.通过表读
conn = create_engine('mysql+pymysql://root:123456@192.168.88.100:3306/test?charset=utf8')
df = pd.read_sql_table("student_2",con = conn)
df
3.通过sql读
# 2 通过sql读取
conn = create_engine('mysql+pymysql://root:123456@192.168.88.100:3306/test?charset=utf8')
df = pd.read_sql_query("select * from student_2 where age > 30",con = conn)
df