pandas读取和保存数据的方法
一、pandas支持的数据格式
- pandas支持的数据格式
- 更多格式可以参考pandas官网
二、pandas常用数据读取方法
1. 准备工作
- 打开jupyter notebook界面,进入新建的文件夹
- 新建一个python文件
2. 代码示例
1.pandas数据读取常用的方法
主要介绍两种,其他方法参考官方文档
- read_csv():读取类型:txt、csv文件(一般是以英文符号逗号","为数据分隔符),csv文件的存储量较大,一般使用csv文件
- read_excel():excel一般超出一百多万的数据就不会再展示
2. read_excel 方法
(1)read_excel()方法:读取excel文件
df_excel = pd.read_excel('D:/WorkSpace/数据分析模拟数据/状态数据.xlsx',sheet_name='状态数据')
可以加参数sheet_name=‘’,表示打开第几个表
-
sheet_name=None: 读取 Excel 文件中的所有工作表,并将每个工作表的数据作为 DataFrame 存储在字典中,键为工作表名称。
-
sheet_name=‘sheet_name’: 只读取指定名称的工作表。
-
sheet_name=0: 读取第一个工作表(可以用数字索引来指定工作表,0代表第一个表格)。
-
如果没有指定 sheet_name,pandas 会默认读取 第一个工作表。
(2)head()方法:展示数据
# head方法,展示数据的前多少条,默认是5
df_excel.head()
快捷键:shift+tab
(3)to_excel()方法:保存excel文件
- 保存单个sheet
#保存excel数据文件
df_excel.to_excel('D:/WorkSpace/数据分析模拟数据/测试保存excel文件数据.xlsx',sheet_name='测试sheet1')
# 如果调用同一个方法,路径与上面一样,会覆盖上面的文件 不会生成两个sheet表
# df_excel.to_excel('D:/WorkSpace/数据分析模拟数据/测试保存excel文件数据.xlsx',sheet_name='测试sheet2')
可以查看到excel保存成功
- 在同一个excel文件中写入多个sheet: ExcelWriter方法
#在同一个excel文件中写入多个sheet: ExcelWriter方法
writer = pd.ExcelWriter('D:/WorkSpace/数据分析模拟数据/测试保存多个sheet的excel文件书数据.xlsx')
df_excel.to_excel(writer,sheet_name='测试sheet3')
df_excel.to_excel(writer,sheet_name='测试sheet4')
#需要保存文件 方可生效
# pandas 的 ExcelWriter 类在最新版本的 pandas(>= 1.2)中,已经移除了 save() 方法。现在,保存 Excel 文件的正确方法是调用 writer.close(),而不是 save()。
writer.close()
可以查看到excel成功保存了两个sheet表
- 会话式保存多个sheet数据到同一个excel文件里
# 会话式保存多个sheet数据到同一个excel文件里
with pd.ExcelWriter('D:/WorkSpace/数据分析模拟数据/测试会话式保存多个sheet的excel文件书数据.xlsx') as writer:
df_excel.to_excel(writer,sheet_name='测试sheet5')
df_excel.to_excel(writer,sheet_name='测试sheet6')
df_excel.to_excel(writer,sheet_name='测试sheet7')
保存结果如下:
3. read_csv方法
- 读取csv文件内容
# 读取csv格式的文件
df_csv = pd.read_csv('D:/WorkSpace/数据分析模拟数据/状态数据.csv')
df_csv.head()
读取结果如下:
- 保存.csv格式的数据
# 保存csv格式数据
df_csv.to_csv('D:/WorkSpace/数据分析模拟数据/测试保存csv格式的数据.csv')
保存结果如下:
- 追加保存
# 保存csv格式数据
df_csv.to_csv('D:/WorkSpace/数据分析模拟数据/测试保存csv格式的数据.csv')
# 文件名已存在默认覆盖之前的数据
# df_csv.to_csv('D:/WorkSpace/数据分析模拟数据/测试保存csv格式的数据.csv')
#在同一个csv文件中追加保存数据
# mode='a':追加 header=None:追加的时候不保存第二个表的表头
df_csv.to_csv('D:/WorkSpace/数据分析模拟数据/测试保存csv格式的数据.csv', mode='a',header=None)
由原来的九十多条数据编程一百多条
三、Pandas读取数据方法中的常用参数
1. read_csv()方法中常用的参数使用方法
1.header:表头
# header=None:默认表头也是数据
# header=0:默认第0行是表头
# header=1:默认第一行是表头,上面的数据都删掉
# header=[0,1]:复合表头 第0行和第1行都是表头
df_csv = pd.read_csv('D:/WorkSpace/数据分析模拟数据/状态数据.csv',header=0)
df_csv.head()
2.names:表头名称
df_csv = pd.read_csv('D:/WorkSpace/数据分析模拟数据/状态数据.csv',header=0, names=['a','b','c','d','e','f','g','h','i','j'])
df_csv.head()
3.index_col:把选中的列当成索引
默认情况索引为前面的数字
# index_col:把选中的列当成索引
df_csv = pd.read_csv('D:/WorkSpace/数据分析模拟数据/状态数据.csv',header=0, index_col='所属周')
# 两种写法 可以用数字或表头字符
# df_csv = pd.read_csv('D:/WorkSpace/数据分析模拟数据/状态数据.csv',header=0, index_col=0)
df_csv.head()
4.usecols:只读取需要使用的列,可以降低缓存
#usecols:
df_csv = pd.read_csv('D:/WorkSpace/数据分析模拟数据/状态数据.csv',header=0, usecols=['所属周','被考核人工号','科室','直接上级姓名'])
# 查看有多少行多少列数据
print(df_csv.shape)
# 可以设置数字
# df_csv = pd.read_csv('D:/WorkSpace/数据分析模拟数据/状态数据.csv',header=0, usecols=[0,1,5,6])
df_csv.head()
5.chunksize:进行数据的分段读取
# 使用chunksize 参数来进行数据的分段读取,chunksize=10:每次读取10条
reader = pd.read_csv('D:/WorkSpace/数据分析模拟数据/状态数据.csv',chunksize=10)
# 存放迭代的数据
chunk = []
for c_data in reader:
print(c_data.shape)
chunk.append(c_data)
# 合并分段读取的数据
# axis=0:以行的形式将迭代的数据进行连接,axis=1以列的形式
df_all = pd.concat(chunk,axis=0)
print(df_all.shape)
df_all.head()
执行结果如下:
6.iterator:进行数据的分段读取
# 使用iterator参数进行数据的分段读取 iterator=True进行分段读取 默认是False
read_iterator = pd.read_csv('D:/WorkSpace/数据分析模拟数据/状态数据.csv',iterator=True)
chunks = []
# 不确定文件有多长时,不建议用for循环,每次循环都要计算次数
while True: #利用循环完会报错的机制 使用while True
try:
reader = read_iterator.get_chunk(10)
print(reader.shape)
chunks.append(reader)
except:
break
df_all = pd.concat(chunk,axis=0)
print(df_all.shape)
# df_all.head()