python pandas 把数据保存成csv文件,以及读取csv文件获取指定行、指定列数据
文章目录:
- 1 数据说明
- 2 把数据集文件信息使用python pandas保存成csv文件
- 3 使用python pandas 读取csv的每行、每列数据
1 数据说明
1、在test_data
目录下是我们的数据集(我虚构的,只是为了说明下面的处理过程)
图片来源这里,不要问,没有联系方式!
- 每张图片名中的数字是样本
数据的标签label
- 这里我们的数据规模大小是5张数据
2、数据保存成csv文件要求
- 每一行代表一个样本
- 每一行的第一列表示文件的路径,每一行的第二列表示样本的标签
2 把数据集文件信息使用python pandas保存成csv文件
1、根据上面保存成csv文件的要求,把数据集相关信息保存到csv文件中:
# coding=utf-8
"""
Copyright (c) 2018-2022. All Rights Reserved.@author: shliang
@email: shliang0603@gmail.com创建和导入csv文件
"""import pandas as pd
import glob
import os
import numpy as np# 创建csv文件
def create_csv_file():'''把test_data目录下的文件绝对路径保存到csv文件中,同时把文件名中的label也保存下来保存两列 filename, label:return:'''img_paths_list = glob.glob("../test_data/*.png")labes_list = []img_label_list = []for path in img_paths_list:img_name = os.path.split(path)[-1]prefix = os.path.splitext(img_name)[0]label = prefix.split('_')[-1]labes_list.append(str(label))# abspath = os.path.abspath(path)img_label_list.append([path, label])# 通过zip函数组合每一个样本的path和label: (path, label)print(img_paths_list)print(labes_list)img_label_list2 = list(zip(img_paths_list, labes_list))print(img_label_list)print(img_label_list2)# 保存数据data格式,嵌套列表,每个子列表中表示每一行数据# df = pd.DataFrame(data=np.array([[img0, label0],[img1, label1],...,[img4, label4]]),# columns=['filepath', 'label'])df1 = pd.DataFrame(data=img_label_list,columns=['filepath', 'label'])df1.to_csv('../test_data/filename1.csv')df1.to_csv('../test_data/filename2.csv', index=False)# 保存数据data格式,列表中嵌套元组,每个元组中表示每一行数据df3 = pd.DataFrame(data=img_label_list2,columns=['filepath', 'label'])df3.to_csv('../test_data/filename3.csv')# 保存数据data格式,字典格式,key表示列名,value是列表,表示每一列数据df4 = pd.DataFrame({"filename": img_paths_list, "label": labes_list})df4.to_csv('../test_data/filename4.csv')if __name__ == '__main__':create_csv_file()
输出结果:
2、pd.DataFrame(data, columns)
的参数
data参数
:是输入要保存的数据
该参数的值有几种输入格式,都是可以的:
- 1)
numpy格式
:data=np.array([[img0, label0],[img1, label1],...,[img4, label4]]
- 2)
列表嵌套列表格式
:保存数据data格式,嵌套列表,每个子列表中表示每一行数据:data=[[img0, label0],[img1, label1],...,[img4, label4]]
- 3)
列表嵌套元组格式
:保存数据data格式,列表中嵌套元组,每个元组中表示每一行数据:data=[(img0, label0),(img1, label1),...,(img4, label4)]
- 4)
字典格式
:保存数据data格式,字典格式,key表示列名,value是列表,表示每一列数据:data={'columns_name1':[img0, img1,...,img4], 'columns_name2': [label0, label1,...,label4]}
columns参数
是每一列的列名,值是列名的列表
!
3、df1.to_csv('../test_data/filename1.csv')
的参数,这里只说两个比较常用的参数
path_or_buf
参数:保存csv文件名
index
参数:默认值是True
,表示保存每行的行索引,如果设置位False表示不保存行索引!
filename1.csv:默认是保存了行索引(filename3.csv和filename4.csv的内容也是如下,一样的!)
filename2.csv:没有保存行索引
注意:
我们一般保存的CSV文件是不需要保存索引
的,直接设置为False吧
,否则这个索引也会作为单独的一列数据
3 使用python pandas 读取csv的每行、每列数据
1、直接上代码,我打印出了每一步的结果,方便大家理解!
# coding=utf-8
"""
Copyright (c) 2018-2022. All Rights Reserved.@author: shliang
@email: shliang0603@gmail.com创建和导入csv文件
"""import pandas as pd
import glob
import os
import numpy as np# 读取csv文件
def read_csv_file():'''下面我们来读取数据拿到上面创建的csv文件,主要操作:- 读取每一行数据:一行代表一个样本- 读取每一列数据:一列表示所有样本的一个属性:return:'''data_info1 = pd.read_csv('../test_data/filename1.csv')data_info2 = pd.read_csv('../test_data/filename2.csv')print(type(data_info1)) # <class 'pandas.core.frame.DataFrame'># 查看前几行数据print(data_info1.head()) # 默认查看前5行数据print(data_info1.head(3)) # 指定查看的数据行数print(data_info2.head())'''Unnamed: 0 filepath label0 0 ../test_data\test_0.png 01 1 ../test_data\test_1.png 12 2 ../test_data\test_2.png 23 3 ../test_data\test_3.png 34 4 ../test_data\test_4.png 4Unnamed: 0 filepath label0 0 ../test_data\test_0.png 01 1 ../test_data\test_1.png 12 2 ../test_data\test_2.png 2filepath label0 ../test_data\test_0.png 01 ../test_data\test_1.png 12 ../test_data\test_2.png 23 ../test_data\test_3.png 34 ../test_data\test_4.png 4'''# 获取数据的行和列数据print(data_info1.shape) # (5, 3) # 5行、3列数据,每一行表示一个样本数据,这里的第一列是行索引print(data_info2.shape) # (5, 2)# 获取每一列的数据类型print(data_info1.dtypes)print(data_info2.dtypes)'''Unnamed: 0 int64filepath objectlabel int64dtype: objectfilepath objectlabel int64dtype: object'''################################################################################################# 获取列名columns1 = data_info1.columnscolumns2 = data_info2.columnsprint('coloumns1:', columns1)print('coloumns2:', columns2)# 把列名转换成列表 to_list() 或 tolist() 两种方法是一样的,源码中有赋值to_list = tolistcolumns1_list = data_info1.columns.tolist()columns2_list = data_info2.columns.to_list()print('coloumns1 list:', columns1_list)print('coloumns2 list:', columns2_list)'''coloumns1: Index(['Unnamed: 0', 'filepath', 'label'], dtype='object')coloumns2: Index(['filepath', 'label'], dtype='object')coloumns1 list: ['Unnamed: 0', 'filepath', 'label']coloumns2 list: ['filepath', 'label']'''# 获取指定列数据filenames1 = data_info1['filepath']filenames2 = data_info1[['filepath']]# 获取指定多列数据,把要获取的列名放到一个列表中,确保你的列名正确并存在,否则报KeyErrorfilenames3 = data_info1[['filepath', 'label']]print('filenames1:', filenames1)print('filenames2:', filenames2)print('filenames3:', filenames3)# 把获取的某一列数转换成列表filename1_list = data_info1['filepath'].tolist()print('filenames1 list:', filename1_list)'''filenames1: 0 ../test_data\test_0.png1 ../test_data\test_1.png2 ../test_data\test_2.png3 ../test_data\test_3.png4 ../test_data\test_4.pngName: filepath, dtype: objectfilenames2: filepath0 ../test_data\test_0.png1 ../test_data\test_1.png2 ../test_data\test_2.png3 ../test_data\test_3.png4 ../test_data\test_4.pngfilenames3: filepath label0 ../test_data\test_0.png 01 ../test_data\test_1.png 12 ../test_data\test_2.png 23 ../test_data\test_3.png 34 ../test_data\test_4.png 4filenames1 list: ['../test_data\\test_0.png', '../test_data\\test_1.png', '../test_data\\test_2.png', '../test_data\\test_3.png', '../test_data\\test_4.png']'''################################################################################################# 获取某些行数据# 去除指定的某一行数据,索引是从0开始的,如下是取出第3行数据。(如果超过行索引会报KeyError)# object 表示字符串类型的值line3 = data_info2.loc[2]print(line3)'''filepath ../test_data\test_2.pnglabel 2Name: 2, dtype: object'''# 取出指定的某一行数据,并转换成列表line3_list = data_info2.loc[2].tolist()print('line3 list:', line3_list) # line3 list: ['../test_data\\test_2.png', 2]# 取出指定的多行数据,如下取出第2行和第4行数据multi_line_data = data_info2.loc[[1, 3]]print(multi_line_data) # 得到的对象是DateFrame,还可以对齐进行行列等操作'''filepath label1 ../test_data\test_1.png 13 ../test_data\test_3.png 3'''# 取出连续多行数据,如下取出第2到第5行数据mulut_conti_line_data = data_info2.loc[1:5]print(mulut_conti_line_data) # 得到的对象是DateFrame,还可以对齐进行行列等操作'''filepath label1 ../test_data\test_1.png 12 ../test_data\test_2.png 23 ../test_data\test_3.png 34 ../test_data\test_4.png 4'''# 对DataFrame的每一行进行循环for index, row in data_info2.iterrows():# print(row)'''filepath ../test_data\test_0.pnglabel 0Name: 0, dtype: object'''# 然后根据列名,获取指定的行对应指定列的数据filepath = row['filepath']label = row['label']print(filepath, label) # ../test_data\test_0.png 0if __name__ == '__main__':read_csv_file()
如果你想了解更多关于pandas的使用技巧可以参考这篇文章
python pandas 把数据保存成csv文件,以及读取csv文件获取指定行、指定列数据相关推荐
- python pandas库读取excel/csv中指定行或列数据详解
通过阅读表格,可以发现Pandas中提供了非常丰富的数据读写方法,下面这篇文章主要给大家介绍了关于python利用pandas库读取excel/csv中指定行或列数据的相关资料,需要的朋友可以参考下 ...
- 从mysql读取数据保存成excel_小程序读取excel表格数据,并存储到云数据库
最近一直比较忙,答应大家的小程序解析excel一直没有写出来,今天终于忙里偷闲,有机会把这篇文章写出来给大家了. 老规矩先看效果图 效果其实很简单,就是把excel里的数据解析出来,然后存到云数据库里 ...
- python中codecs_Python:如何使用codecs模块将unicode数据保存成gbk格式
需求:使用codecs模块将utf-8的文件保存成gbk格式. 读取的时候,已经将编码设置成utf-8了.输出结果是unicode字符串. 但是在将unicode字符串写入文件并保存为gbk的时候,发 ...
- 画板数据保存成文件的两种方法小结
前面我学习了绘制画板以及画板的重绘,最近学习将画板数据保存成文件,与大家分享下.关于画板的保存有两种方式.先说说用队列来保存文件吧:首先需要将重绘时用来保存对象的队列按我们定义的文件格式写入文件: / ...
- python codecs_Python:如何使用codecs模块将unicode数据保存成gbk格式
需求:使用codecs模块将utf-8的文件保存成gbk格式. 读取的时候,已经将编码设置成utf-8了.输出结果是unicode字符串. 但是在将unicode字符串写入文件并保存为gbk的时候,发 ...
- 第四章:数据存储-csv文件处理-读取csv文件的两种方式
直接学习:https://edu.csdn.net/course/play/24756/280718 csv文件处理-读取csv文件的两种方式: # 这种方式读取到的每一条数据是个列表,所以需要通过下 ...
- JPG、RGB、YUV像素数据保存成JPG、BMP图片
本文章使用的摄像头是OV2640,可以直接输出JPG格式的图片,摄像头不多说,开发板是ESP32-CAM,串口输出数据给上位机,C#写的,VS2017. 1.JPG数据图片显示和保存 JPG格式的图片 ...
- Python 将数据写入pkl文件,读取pkl文件
Python 将数据写入pkl文件,读取pkl文件 写入pkl文件 data = {"name": ["李明", "胡莉"]} with o ...
- 使用matlab将数据保存成动态图
使用matlab将数据保存成动态图 处理流程 使用函数说明 重点函数讲解 效果图 代码下载 参考资料 处理流程 1.将数据绘制成RGB图 2.将RGB图转换成索引图 3.保存索引图 使用函数说明 ge ...
最新文章
- 怎么学python-结合学习经历,谈一谈如何学习Python
- 1.10 访问对象的属性和行为
- 电脑删除linux系统,我的电脑现在装有XP和Linux两个系统,现在想删除Linux系统,开机不用选直接进入XP。不知怎么做??...
- tomcat的安装和部署项目
- python 30分钟_一张图30分钟快速Python入门
- matlab 高斯迭代代码_用Matlab编写你的第一个有限元_《数值计算与程序设计》系列课程...
- redis api 中文文档_我的Redis学习资料库
- 【转】Linux的.a、.so和.o文件
- 不是华为!国内首款5G手机开卖:10分钟送达第一单
- centos mysql server_Centos 7 下载安装 mysql server 5.6 (亲测可用)
- 在C ++中将String转换为Integer并将Integer转换为String
- 实战自制Linux操作系统
- “21天好习惯“第一期-4
- 【JAVA程序设计】基本数据类型
- Wordpress源码文件详解
- 智能陈桥五笔输入法 for linux,科技教程:在Linux下安装陈桥五笔输入法
- 批发商/分销商会有一波向B2B转型的浪潮
- Emacs - Verilog mode 自动实例化
- 互联网晚报 | 1月8日 星期六 | 小米商城已支持数字人民币支付;微信视频号将上线付费直播间;苹果CEO去年薪酬近1亿美元...
- curl: (60) Peer‘s Certificate issuer is not recognized
热门文章
- JQuery图片加载显示loading和加载失败默认图片
- 104. Maximum Depth of Binary Tree
- Android Activity和Fragment的转场动画
- node.js安装初体验
- mysql数据库重命名php_mysql基础:删除数据库,删除表,重命名表_MySQL
- 学python需要安装什么软件-学武汉Python培训课程需要安装什么软件?分享这10款...
- python好用-Python有哪些常见的、好用的爬虫框架?
- python小项目案例-拯救Python新手的几个项目实战
- python新手自学-新手自学python
- python菜鸟教程官网绘图-NumPy Matplotlib