目录
读写文件的类型
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:[email protected]: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:[email protected]:3306/test?charset=utf8')
df = pd.read_sql_table("student_2",con = conn)
df
3.通过sql读
# 2 通过sql读取
conn = create_engine('mysql+pymysql://root:[email protected]:3306/test?charset=utf8')
df = pd.read_sql_query("select * from student_2 where age > 30",con = conn)
df
标签:..,df,读写,索引,student,output,csv,数据,Pandas From: https://blog.csdn.net/weixin_58305115/article/details/142287968