时间脱敏 保护敏感时间信息的隐私。一些时间脱敏方法:
1. 年份脱敏:将具体的年份转换为年代范围,例如将1990年转换为1990s。
2. 月份脱敏:将具体的月份转换为季度或季节,例如将7月转换为夏季。
3. 日期脱敏:将具体的日期转换为星期几,例如将2022年1月1日转换为星期六。
4. 时间脱敏:将具体的时间转换为时间段,例如将15:30转换为下午。
5. 时间戳脱敏:将具体的时间戳转换为时间段,例如将1612345678转换为下午。
6. 时区脱敏:将具体的时区转换为地区或国家,例如将GMT+8转换为中国。
7. 时段脱敏:将具体的时段转换为早晨、上午、下午、晚上等,例如将9:00-12:00转换为上午。
8. 时间间隔脱敏:将具体的时间间隔转换为范围,例如将30分钟转换为30分钟以内或30分钟以上。
9. 时间差脱敏:将具体的时间转换为与某个基准时间的时间差,例如将2022年1月1日转换为与当前时间的天数差。
10. 时间周期脱敏:将具体的时间转换为某个周期内的时间,例如将2022年1月1日转换为每月的第一天。
11. 时间分布脱敏:将具体的时间转换为符合某种分布的时间,例如将具体的时间转换为符合正态分布的时间。
12. 时间模糊脱敏:将具体的时间转换为模糊的时间范围,例如将2022年1月1日转换为2022年1月上旬。
时间段脱敏 将具体的时间采用时间段方式进行脱敏处理。(之前写过时间取整的方法)
import pandas as pd
from datetime import datetime
import time
# 定义时间段脱敏函数
def desensitize_time(time_str):
time = datetime.strptime(str(time_str),"%Y-%m-%d %H:%M:%S")
hour = time.hour
if 0 <= hour < 6:
return "凌晨"
elif 6 <= hour < 12:
return "上午"
elif 12 <= hour < 18:
return "下午"
else:
return "晚上"
# 读取csv文件
df = pd.read_excel('D:...ge/gapdata100_success.xlsx')
print(df.head())
time_list = df['timess']
# 遍历替换 调用函数
for i in range(len(time_list)):
time1 = time_list[i]
#截取前10字段
time2 = str(time1)[:10]
#对时间列进行脱敏
time3 = desensitize_time(time1)
time_list[i] = f'{time2} {time3}'
print(df)
# 保存文件
#df.to_excel('D:...gge/gapdata100_success_11111.xlsx', index=False)
# # 对时间列进行脱敏 只显示上下午 不显示日期了
#df['timess'] = df['timess'].apply(desensitize_time)
# # 示例用法
# time_str = "2022-01-01 08:30:00"
# desensitized_time = desensitize_time(time_str)
# print("当天日期:", time_str[:10])
# print("脱敏后的时间段:", desensitized_time)
## print(f'{time_str[:10]} {desensitized_time}')
'''
timess
0 2016-02-08 11:50:00
1 2016-02-08 06:10:00
2 2016-02-08 12:10:00
timess
0 2016-02-08 上午
1 2016-02-08 上午
2 2016-02-08 下午
'''
时间模糊脱敏 将具体的日期转换为一个范围或者一个模糊的时间段。
#import xlwt # 先安装pip install
from datetime import datetime # 注意一定要用datetime package
import pandas as pd
def blur_time(date):
# 将日期字符串转换为datetime对象
dt = datetime.strptime(date, '%Y-%m-%d')
# 获取年份、月份和日期
year = dt.year
month = dt.month
day = dt.day
# 根据日期范围进行模糊化处理
if day <= 10:
time_range = '上旬'
elif day <= 20:
time_range = '中旬'
else:
time_range = '下旬'
# 返回模糊化后的时间范围
return f'{year}年{month}月{time_range}'
df = pd.read_csv('D:...set/data_wuliu.csv', encoding="utf-8",sep=',')
print(df.head())
time_list = df['销售时间']
# 遍历替换 调用函数
for i in range(len(time_list)):
time1 = time_list[i]
blur_date = blur_time(time1) #调用函数
time_list[i] = blur_date
print(df)
# 保存文件
#df.to_excel('D://.../data_wulius.xlsx', index=False)
'''
订单号 订单行 销售时间
0 P096311 10 2016-7-30
1 P096826 10 2016-8-30
订单号 订单行 销售时间
0 P096311 10 2016年7月下旬
1 P096826 10 2016年8月下旬
'''
日期脱敏 将具体的日期转换为星期几。
#import xlwt # 先安装pip install
import datetime # 注意这里
import pandas as pd
df = pd.read_csv('D:..set/data_wuliu.csv', encoding="utf-8",sep=',')
print(df.head())
time_list = df['销售时间']
# 遍历替换 调用函数
for i in range(len(time_list)):
date_str = time_list[i]
date = datetime.datetime.strptime(date_str, '%Y-%m-%d').date() # 将字符串转换为datetime对象
week_day = date.strftime('%A') # 将日期转换为星期几,%A表示星期几的全称,例如'Saturday'
time_list[i] = week_day
print(df)
# 保存文件
#df.to_excel('D:...data_wulius.xlsx', index=False)
'''
订单号 订单行 销售时间
0 P096311 10 Saturday
1 P096826 10 Tuesday
2 NaN 20 Tuesday
'''
月份脱敏 将具体的月份转换为季度或者季节。
#import xlwt # 先安装pip install
from datetime import datetime # 注意一定要用datetime package
import pandas as pd
def convert_to_season(date_str):
date = datetime.strptime(date_str, "%Y-%m-%d")
year = date.year
month = date.month
if month in [1, 2, 3]:
season = "第一季度" #可以改成 春夏秋冬
elif month in [4, 5, 6]:
season = "第二季度"
elif month in [7, 8, 9]:
season = "第三季度"
else:
season = "第四季度"
return f"{year}年{season}"
df = pd.read_csv('D:.../data_wuliu.csv', encoding="utf-8",sep=',')
print(df.head())
time_list = df['交货时间']
# 遍历替换 调用函数
for i in range(len(time_list)):
time1 = time_list[i]
season_str = convert_to_season(time1) #调用函数
time_list[i] = season_str
print(df)
# 保存文件
#df.to_excel('D:.../data_wulius.xlsx', index=False)
'''
订单号 订单行 销售时间 交货时间
0 P096311 10 2016-7-30 2016年第三季度
1 P096826 10 2016-8-30 2016年第四季度
2 NaN 20 2016-8-30 2016年第四季度
'''
年份脱敏 将具体的年份转换为年代范围,例如将1990年转换为1990s或者199X。
#import xlwt # 先安装pip install
from datetime import datetime # 注意一定要用datetime package
import pandas as pd
def convert_to_decade(year):
decade = year[:3] + 'X'
return decade
df = pd.read_csv('D:...set/data_wuliu.csv', encoding="utf-8",sep=',')
print(df.head())
time_list = df['销售时间']
# 遍历替换 调用函数
for i in range(len(time_list)):
time1 = time_list[i]
year = time1.split('-')[0]
decade = convert_to_decade(year) #调用函数
time_list[i] = decade
print(df)
# 保存文件
#df.to_excel('D:.../data_wulius.xlsx', index=False)
'''
#1999年转换为1990s方法,只需将函数替换
def convert_to_decade(year):
decade = year // 10 * 10
return f"{decade}s"
date = "2016-7-30"
year = int(date.split("-")[0]) #以及调用函数时,转为int类型 两处不同
decade = convert_to_decade(year)
print(decade)
'''
'''
订单号 订单行 销售时间
0 P096311 10 201X
2 NaN 20 201X
3 P097435 10 201X
'''