Pandas_数据预处理_读写去重
列编辑
“Column selection mode”、“列块模式”、“列编辑”、“多光标功能
notepad ++ 列模式 : alt +鼠标左键 列模式选择
vscode :Shift+Alt+鼠标左键 列模式,多行同时操作的方法步骤快捷键
Pandas 数据预处理
read_csv() sep
header names encoding
df['col'] = 'str' + df['col'].astype(str)
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False)
df.drop_duplicates(subset=['brand', 'style'], keep='last')
import numpy as np
df['val'] = np.arange(len(df))//4+1
Dataframe d读写
DataFrame.to_csv(path_or_buf=None, sep=',', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, mode='w', encoding=None, compression='infer', quoting=None, quotechar='"', line_terminator=None, chunksize=None, date_format=None, doublequote=True, escapechar=None, decimal='.', errors='strict')
columns header
index index_label
Dataframe拼接和增加列
concat()函数利用拼接的方式,添加新的一列。好处是可以同时新增多个列名。
df1 = pd.concat([df1, pd.DataFrame(columns=['f'])])
直接赋值法
df[‘新列名’]=新列的值
df.loc[:,新列名]=值
df['level'] = df.apply(lambda x: getlevel(x.score), axis=1)
代码示例
#-*- coding: utf-8 -*-
#!/usr/bin/python3
from pathlib import Path
import json
import os
import numpy as np
import pandas as pd
def load_jest_json_label(json_dir,son_name):
if test_json.exists():
gt_npy = []
gt_boxes = json.load(open(test_json, 'r'))['labels']
for test in gt_boxes:
type=test["type"]
num=test["num"]
gt_npy.append([type,num] )
#将数据转换为Dataframe
gt_boxes = pd.DataFrame(gt_npy)
gt_boxes.columns =["type","num"]
return gt_boxes
if __name__ == '__main__':
root_dir =r"/data/test"
js_file_list = os.listdir(root_dir)
##将Dataframe展开
json_ts_info =[]
for sig_js_file in js_file_list:
box_all_nm = load_jest_json_label(root_dir,sig_js_file)
############## group 的信息
#个DataFrameGroupBy对象,直接打印DataFrameGroupBy对象只能看到它的内存地址
grouped_data = box_all_nm.groupby(['type'])
#<class 'tuple'> <class 'str'> <class 'pandas.core.frame.DataFrame'>
#内部结构是[(分组名1, 子DataFrame1), (分组名2, 子DataFrame2), ...]
#。遍历出来的是一个个元组,每个元组对应一个分组,元组的第一个元素与分组列里的值对应,元组的第二个元素是分到当前小组的数据,是一个DataFrame
# 分组对象的groups属性 可以返回分组信息,结果是一个形似字典的对象,由分组名和此分组数据在原DataFrame中的行索引组成 get_group()方法可以返回指定分组名的子DataFrame
group_name = [gn for gn in grouped_data.groups.keys()]
groupde_value = grouped_data.max().values.tolist()
info = list(zip(group_name,groupde_value))
json_ts_info.append(info)
###展开嵌套的list的方式
###等价于以下 嵌套的数据展开
json_data = [sig_group_label for sig_json_file in json_ts_info for sig_group_label in sig_json_file]
# # s=[]
# for data in json_ts_info:
# for sig_group_label in data:
# print("### ",sig_group_label,len(data))
# s.append(sig_group_label)
result = pd.DataFrame(json_data)
put_rst = pd.DataFrame(result[1].values.tolist())
# concat(), 按行连接(纵向)也可以按列连接(横向)
rsult_df = pd.concat([result[0], put_rst], axis=1)
rsult_df.columns= ["type","num"]
data_info_stat = rsult_df.groupby("type")[["num"]].max()
##取部分组进行计算 #print(rsult_df.groupby("type").max())
max_info = rsult_df.groupby("type")[[ts, ]].max()
##pandas 重命名方式一
max_info.columns=["ts", ]
print(max_info)
min_info = rsult_df.groupby("type")[["num",]].min()
##pandas 重命名方式二
min_info.rename(columns={"pts_num":"num"},inplace=True)
print(min_info)
##dataframe join方法是将两个表格按照索引进行合并,不需要指定列名。
# .join(right, how='inner')
statis_info =max_info.join(min_info,how="inner")
# 将索引列转换为正常列 原始的索引列被添加为了新的列”index”,而数据框的索引则被重置为0开始的整数。想保留原始索引列,可以设置参数drop=False
statis_info = statis_info.reset_index()
print(statis_info)
#concat(), merge(), append(), join() 需要指定合并的方式(inner、outer、left、right)和合并的列名
base_line = pd.DataFrame(base_info)
base_line.columns=base_info_nm
statis = pd.merge(statis_info,base_line,on="type",how="left")
图片读取方式
cv2.imread
是uint8类型,0-255范围,图像形状是(H,W,C),读入的顺序是BGR
cv2.imwrite - 保存numpy格式的图片
cv2.imwrite("cv2.jpg",img)
matplotlib.pyplot.imread
图片是numpy数组,是unit8类型,0-255范围,图像形状是(H,W,C),读入的顺序是RGB
plt.imsave - 保存numpy格式的图片
plt.imsave('plt.jpg',img)
3.PIL.image.open
PIL.image - 保存PIL格式的图片
img.save("PIL.jpg")
参考
vscode 列操作_[vscode]列编辑功能 https://blog.csdn.net/weixin_32616935/article/details/113452810
http://pandas.pydata.org/pandas-docs/stable/user_guide/io.html#io-read-csv-table
分类:
Python_Java_数据开发
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)