【技术分享】使用 pandas 处理 COCO 格式数据 写入读取 pickle .pkl 格式 数据处理方法


1.分析COCO标注数据

使用pycocotools读取文件
COCO
cocoapi/PythonAPI/pycocotools/coco.py /

from pycocotools.coco import COCO
import pandas as pd

ann_file = './xxx.json'
annotation = COCO(annotation_file=ann_file)
annotation.dataset #所有数据
annotation.anns#标注
annotation.cats#类别
annotation.imgs#图片

2.分析DataFrame数据

转换为dataframe,使用head()查看示例数据,默认值为5,可指定显示数量

ann_label = pd.DataFrame(annotation.anns.values())
ann_label.head()
ann_label.head(1)

isin()可以判断元素是否在一个列表中,用来筛选指定类别的数据

ann_label = ann_label[ann_label['category_id'].isin([0,1,2,3])]

hist()可以以直方图形式分析某项数据分布情况

ann_label['area'].hist()

hist()
describe()描述基本信息

ann_label['area'].describe()

count      2717.000000
mean      756703.840887
std        4253.211573
min       10450.000000
25%       75439.000000
50%       77824.000000
75%       88767.000000
max      145141.000000
Name: area, dtype: float64

value_counts()统计数值分布

ann_label['xxx'].value_counts()

81     108
83      93
79      91
82      88
84      87
      ... 
170      1
168      1
145      1
138      1
131      1
Name: height, Length: 107, dtype: int64

reset_index()重置index,具体用法见文档
pandas.DataFrame.reset_index

ann_label.reset_index(drop=True, inplace=True)

StratifiedKFold函数采用分层划分的方法(分层随机抽样思想),验证集中不同类别占比与原始样本的比例保持一致,故StratifiedKFold在做划分的时候需要传入标签特征。

from sklearn.model_selection import StratifiedKFold

skf = StratifiedKFold(
    n_splits=5, shuffle=True, random_state=2022
)
for fold, (train_idx, val_idx) in enumerate(skf.split(ann_label["image_id"], ann_label["grading"])):
    ann_label.loc[val_idx, 'fold']=fold
   
tra_df = ann_label[ann_label['fold']!=0]
val_df = ann_label[ann_label['fold']==0]

3.pickle .pkl 格式存取

处理完毕后可以使用to_pickle储存为便携模式

ann_label.to_pickle('./ann.pkl')

使用read_pickle直接读取

ann_label= pd.read_pickle('./ann.pkl')
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要将mosi数据转换为.pkl格式,您可以按照以下步骤进行操作: 1. 首先,确保您已经安装了Python以及所需的软件包,如pandaspickle。 2. 导入所需的库,并加载mosi数据集到Python环境中。您可以使用pandas库中的read_csv函数将mosi数据读取为DataFrame对象。 3. 对于mosi数据集,您可以在DataFrame中的每一行代表一个示例,每一列代表一个特征。根据您的需求,您可以对数据进行预处理,包括数据清洗、特征提取或选择。 4. 一旦您完成了数据处理步骤,可以将DataFrame对象保存为.pkl格式使用pickle库中的dump函数可以将DataFrame对象转换为.pkl文件,该文件可以存储数据的结构和内容。 5. 提供一个目标文件名和路径,以便将.pkl文件保存在指定的位置。 下面是一个示例代码: ```python import pandas as pd import pickle # 1. 加载mosi数据集到DataFrame中 df = pd.read_csv('mosi_dataset.csv') # 2. 数据处理 # your data preprocessing steps here # 3. 将DataFrame对象保存为.pkl文件 output_file = 'mosi_data.pkl' with open(output_file, 'wb') as f: pickle.dump(df, f) print("转换完成,数据已保存为.pkl文件。") ``` 运行此代码后,您将在指定的路径中找到转换后的.pkl文件。请确保您提供有效的mosi数据集路径,并根据需要修改文件名和路径。转换完成后,您便可以使用该.pkl文件进行后续的数据分析、训练或其他操作。 ### 回答2: 要将MOSI数据转换为.pkl格式,需要使用Python的pickle库。首先,我们需要安装pickle库(如果未安装)。可以使用pip进行安装,命令为“pip install pickle”。 接下来,我们需要读取MOSI数据并将其转换为Python对象。MOSI数据通常是存储在csv文件中的。可以使用Python的csv库来读取处理csv文件。 一旦我们将MOSI数据读取到Python中,我们可以使用pickle库的dump函数将其转换为.pkl格式。dump函数的第一个参数是要转换的Python对象,第二个参数是要保存的文件。 下面是一个简单的代码示例,展示了如何将MOSI数据转换为.pkl格式: ```python import csv import pickle mosi_data = [] # 读取MOSI数据 with open('mosi_data.csv', 'r') as csvfile: csvreader = csv.reader(csvfile) for row in csvreader: mosi_data.append(row) # 将数据保存为.pkl格式 with open('mosi_data.pkl', 'wb') as pklfile: pickle.dump(mosi_data, pklfile) ``` 在上面的代码中,mosi_data是一个列表,用于存储从csv文件中读取的MOSI数据。这个列表可以根据需要进行处理和转换。然后,我们使用pickle.dump函数将mosi_data对象保存为.pkl文件,文件名为mosi_data.pkl。 请确保根据实际情况修改文件名和文件路径。此外,还可以根据需要进行进一步的数据处理和转换,然后再保存为.pkl格式。 ### 回答3: 要将MOSI数据转换为.pkl格式,首先需要明确.pkl是一种Python特定的数据序列化格式,用于将Python对象以二进制形式保存到磁盘,方便后续读取使用。 步骤如下: 1. 导入必要的Python库,如pickle和numpy。 2. 加载MOSI数据集,确保数据集的格式正确且完整。 3. 对数据集进行必要的预处理和清洗,如去除缺失值、标准化数据等。 4. 将数据集按需要的格式转换为Python对象,如字典、列表或其他数据结构。确保数据结构符合.pkl格式的要求。 5. 使用pickle库的dump()函数将Python对象保存为.pkl文件。指定保存的文件名和路径,确保命名具有可读性和描述性。 6. 关闭.pkl文件,确保保存操作完成。 7. 可选的,使用pickle库的load()函数读取保存的.pkl文件,将其反序列化为Python对象,方便后续使用。 需要注意的是,转换为.pkl格式数据应尽量减小文件大小、提高读取速度和节省存储空间。此外,在进行数据转换过程中,需要确保数据的完整性和准确性,避免数据丢失和错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值