专业模板网站设计公司,汽配网站开发,网站制作目标及要求,怎么让自己的网站通过域名访问不了Pandas 是一个基于 Python 的数据处理与分析库#xff0c;主要用于处理结构化数据#xff0c;例如 Excel 表格、CSV 文件、JSON数据等。
该库提供了高效且易于使用的数据结构#xff0c;如 DataFrame 和 Series#xff0c;能够支持数据的读取、清洗、整理、统计与存储等操…Pandas是一个基于 Python 的数据处理与分析库主要用于处理结构化数据例如 Excel 表格、CSV 文件、JSON数据等。该库提供了高效且易于使用的数据结构如DataFrame和Series能够支持数据的读取、清洗、整理、统计与存储等操作。在深度学习任务中Pandas 通常用于训练前的数据预处理以及训练过程中的实验记录管理例如保存关键数据为 CSV 文件、记录并分析模型训练日志从而提升实验的可管理性与可复现性。官方文档参考https://pandas.pydata.org/docs/reference/index.html一、核心数据结构1.Seriesimportpandasaspd spd.Series([0.1,0.3,0.2],index[train,val,test])Series类似一维带索引的数组。可以类似字典一样进行索引同时对标签的要求只有数量一致标签类型可以是字符串或者数字等其它。在深度学习中常用于记录某个指标随 epoch 变化存储 loss / accuracy 的一维日志。2.DataFramedfpd.DataFrame({epoch:[1,2,3],loss:[0.8,0.5,0.3],acc:[0.6,0.75,0.85]})DataFrame是最常用的数据结构一种二维表格。严格要求每一列的长度必须一致如下所示的epoch列、loss列、acc列长度均一致。如果你print(df)看到的是epoch loss acc010.80.60120.50.75230.30.85二、数据处理3. 读取数据dfpd.read_csv(train.csv)dfpd.read_excel(data.xlsx)dfpd.read_json(log.json)读取结果都是一个pandas.DataFrame对象。4. 保存数据df.to_csv(result.csv,indexFalse)将一个pandas.DataFrame对象保存为名为“result.csv”的CSV文件indexFalse表明不保存 Pandas 自动生成的行索引0,1,2,…。训练日志一般不需要保存 index防止干扰后续读取。5、查看数据1部分查看df.head()# 输出df前五行df.tail()# 输出df后五行2基本信息查看df.columns# 输出行信息输出示例Index([epoch, loss, acc], dtypeobject)df.shape# 输出df形状,譬如33df.info()# 输出df基本信息输出示例classpandas.core.frame.DataFrameRangeIndex:5entries,0to4Data columns(total4columns):# Column Non-Null Count Dtype--- ------ -------------- -----0epoch5non-null int641train_loss5non-null float642val_loss5non-null float643val_acc5non-null float64从基本信息可以查看行列数数据类型是否有缺失值Non-Null Count。3数字特征查看df.describe()# 输出df的一些数字特征值输出示例epoch train_loss val_loss val_acc count 5.000000 5.000000 5.000000 5.000000 mean 3.000000 0.526000 0.658000 0.698000 std 1.581139 0.259000 0.257000 0.101000 min 1.000000 0.300000 0.460000 0.520000 25% 2.000000 0.350000 0.480000 0.680000 50% 3.000000 0.410000 0.550000 0.740000 75% 4.000000 0.620000 0.700000 0.770000 max 5.000000 0.950000 1.100000 0.780000可以查看一些统计学量。6、索引、筛选数据df[loss]# 访问单列df[[epoch,loss]]# 访问多列# 如果未知数据不知列名df.iloc[0]# 第 1 行df.iloc[:,1]# 第 2 列# 如果要指定取值的话df.loc[0,loss]# 取第0行的train_loss值# 对行条件筛选df.loc[df[epoch]5]#可能输出# epoch train_loss val_loss val_acc# 5 6 0.42 0.58 0.75# 6 7 0.40 0.57 0.76df[df[loss]0.5]df[(df[acc]0.8)(df[epoch]10)]df.loc[df[epoch]5,[epoch,val_loss,val_acc]]#loc命令的强大之处含义是epoch 5 的行只要这几列。指定列7、清洗数据1缺失值处理df.isna().sum()输出示例:epoch 0 train_loss 1 val_loss 1 val_acc 1 dtype: int64查看每一列有多少缺失值。df.dropna()# 直接删除掉含缺失值的行df.fillna(0)# 用固定值0填充缺失值下同理df.fillna(df.mean())2类型转换df[label]df[label].astype(int)df[time]pd.to_datetime(df[time])3去重df.drop_duplicates()# 删除重复行默认保留第一次出现的行8、数据变换df[log_loss]np.log(df[loss])# 新增一个新列元素为df[loss]的对数化结果# 向量化操作最常用df[score]df.apply(lambdax:x[acc]-x[loss],axis1)# 新增一个新列元素为按行axis1的计算式x[acc] - x[loss]# 不建议滥用Python层for-loop性能远慢于向量化操作。复杂计算时可用。df[score]df[acc]-df[loss]# 推荐写法label_map{cat:0,dog:1}# 标签处理--映射df[label_id]df[label].map(label_map)# 利用字典label_map完成映射9、数据#importpandasaspd dfpd.DataFrame({model:[CNN,CNN,ViT,ViT,CNN],epoch:[1,2,1,2,3],acc:[0.80,0.82,0.85,0.87,0.83]})resultdf.groupby(model)[acc].mean()print(result)输出model CNN0.816667ViT0.860000Name: acc, dtype: float64df.groupby(model)[acc].mean()把 DataFrame 按model列的取值分组只关注acc这一列对每个组内部的 acc 求平均值。10、数据排序df.sort_values(acc,ascendingFalse)#按 acc 列从大到小排序整个 DataFrame。df.nlargest(5,acc)#直接取 acc 最大的前 5 行。11、与 NumPy / PyTorch 的衔接xdf[[f1,f2]].values12. Pandas → PyTorch Datasetlabelstorch.tensor(df[label].values)