旅游网站制作方法,建站工具有哪些cms,建设电商网站需要多少钱,wordpress 仿北京时间一. 检测重复值
1.1 检测
data pd.read_csv(./teacher/订单数据.csv)检测行与行之前是否有重复值
data.drop_duplicates()检测 列是否有重复值出现#xff0c; keep first 从前往后判定 #xff0c; last是从后往前判定data.drop_duplicates(subset[产…一. 检测重复值
1.1 检测
data pd.read_csv(./teacher/订单数据.csv)检测行与行之前是否有重复值
data.drop_duplicates()检测 列是否有重复值出现 keep first 从前往后判定 last是从后往前判定data.drop_duplicates(subset[产品类别,省份],keeplast)
1.2 删除重复值 drop_duplicates
data.drop_duplicates(subset [产品类别,省份],keepfirst)
二. 时间分组
2.1 时间修饰器
数据类型必须是 datetime64[ns]可以获取年份
data.日期.dt.year获取周几 但是默认周日 是 0 用replace 将 0 换成 7
data.日期.dt.weekday.replace({0:7})
2.2 将 data 表 的日期 按照 年进行分组
data.groupby(by[data.日期.dt.year]).agg({金额:sum})用时间修饰器 将 日期 提取年份
2.3 将 data 表 的日期 按照 年月 进行分组
data.日期.dt.strftime(%Y-%m-01) strftime 相当于python 中的 f“{}” data.groupby(by[data.日期.dt.strftime(%Y-%m-01)]).agg({金额:sum})
2.4 下单的时段
0-4 : 午夜 5-7 : 凌晨 8-11: 早晨 12-14: 中午 15-18 : 下午 19-21 : 傍晚 22 - 23 : 深夜
定义时段 map() 是对series 进行循环的
def func(x):if x5:return 午夜elif x8:return 凌晨elif x12:return 早晨elif x15:return 中午elif x19:return 下午elif x22:return 傍晚else:return 深夜data[时段] data.日期.dt.hour.map(func)data.日期.dt.hour 这里计算出 hour后 返回到func中再返回出 相应的时间
2.5 下单时间距今差值 计算数据的最大的日期 way1
ds data.groupby(by[省份]).日期.max()Timestamp(2016-07-28 20:12:12)因为ds data.groupby(by[省份]).日期.max() 计算出来的数据类型是时间戳
所有想计算出 天数 需要用 np.timedelta64(1,D)(datetime(2016,7,29) - ds) / np.timedelta64(1,D) 三 .重采样resamle
要求日期时间类型的列 必须作为行索引
将 列 日期 转为 行索引
data.set_index([日期],inplaceTrue)data.resample(Y).agg({金额:sum})
这样就会 按照年进行分组金额
日期
2013-12-31 853625
2014-12-31 124443
2015-12-31 1228887
2016-12-31 377721
四. 数据分箱 只能对序列 类型分箱
连续数据类型 : 数字离散数据类型 : 文字一般看的数据表达的含义 连续 : 时间类型 可以进行 运算 ,也可以 进行正反推离散 : 当前 时间 范围有限,所以任务 时间 是离散型
数据的分箱 可以 把 连续数据类型 修改成 离散数据类型
时间 : 0~23 就是离散类型
4.1 pd.cut() 分箱操作
pd.cut(data.金额,bins1000)
分箱操作 bins 是分箱的数量
三种分箱操作
pd.cut(data.金额,bins1000) #等分间隔
pd.cut(data.金额,binsrange(0,20001,5000))[(0, 5000] (5000, 10000] (10000, 15000] (15000, 20000]pd.cut(data.金额,bins[0,500,1500,5000,10000,20000],labelslist(ABCDE))[A B C D E]
4.2 按照 百分位进行 分箱 就是 25% 50% (pd.qcut)
pd.qcut(data.金额,q4) 意思是 按照 4 分位进行计算 0.25
[(1.999, 15.75] (15.75, 40.0] (40.0, 175.0] (175.0, 17890.0]]可以用
data.金额.quantile(0),data.金额.quantile(0.25),data.金额.quantile(0.5),data.金额.quantile(0.75),data.金额.quantile(1) 进行验证(2.0, 15.75, 40.0, 175.0, 17890.0)
五. 字符修饰器 5.1 contains 包含...
#包含自行车字样
data.loc[data.产品子类别.str.contains(自行车)].groupby(by[产品子类别]).金额.sum()
5.2 startswith() 以...开头
data.loc[data.产品子类别.str.startswith(自行车)].groupby(by[产品子类别]).金额.sum()
5.3 endswith() 以... 结尾
data.loc[data.产品子类别.str.endswith(自行车)].groupby(by[产品子类别]).金额.sum()
5.4 str.upper(). 大写 str.lower(). 小写 str.title(). 首字母大写 str.swapcase() 大小写转换 data.产品名称.str.upper().str.lower().str.title().str.swapcase()
5.5 字符串的分割 与 拼接 str.split(). str.join()
data.产品名称.str.split( ).str.join(-)以空格分隔 再用 - 拼接
5.6 指定出现的字符
data.产品名称.str.count(T)
5.7 每个字符的长度
data.产品名称.str.len()
5.8 编码和解码 encode 编码 decode 解码
data.产品子类别.str.encode(936).str.decode(GB2312)
5.9 居中对齐 左对其 右对齐
data.产品子类别.str.center(15) 居中对齐
data.产品子类别.str.ljust(15) 左对齐
data.产品子类别.str.rjust(15) 右对齐
6.0 字符长度固定 zfill 和 str.pad()
data.产品子类别.str.zfill(10)0 00000车胎和内胎
1 0000000骑行服
2 00000旅行自行车
3 00000山地自行车
4 00000车胎和内胎data.产品子类别.str.pad(10,sideleft,fillchar-) 左填充 -
0 -----车胎和内胎
1 -------骑行服
2 -----旅行自行车
3 -----山地自行车6.1 数据类型的判断
s.str.isalpha() #字母s.str.isnumeric() #纯数字组成s.str.isdigit() #数字s.str.istitle() # 开头是大写 其他都小写
六 . 时间序列
6.1 获取当前日期时间 datetime.now() .strftime() 就是类似format
#获取当前日期时间
datetime.now().strftime(%Y-%m-%d %H:%M:%S)
6.2 时间戳 Timestamp
pd.Timestamp(1234567890,units,tzAsia/ShangHai)
unit是 时间单位 s是秒 m是月 tz是时区把一个序列中的字符 转换成 datetime64
pd.to_datetime([(2015-1-1)])
DatetimeIndex([2015-01-01], dtypedatetime64[ns], freqNone)#Timestamp
pd.Timestamp(datetime(2050,1,1))
Timestamp(2050-01-01 00:00:00)pd.Timestamp(2038-1-1 T23)
#Timestamp(2038-01-01 23:00:00)
#T 是 time 时间6.3 时间的相关计算
Timedelta :代表 时间单位
Timedelta :代表 时间单位
pd.Timestamp(2234567890,units) - np.timedelta64(1,D)np.timedelta64(1,D) 1 d for day
一年当中第多少天
pd.Timestamp(2234567890,units).dayofyear #一年当中第多少天
一年中的第多少周
pd.Timestamp(2234567890,units).weekofyear #一年中的第多少周
当前月份有多少天
pd.Timestamp(2020-2-2,units).days_in_month
七. 内置样式
给空值 高亮
df.style.highlight_null()df.style.highlight_between(subset[A],color#ff10002f)df.style.background_gradient(cmaprainbow)
梯度背景色格式
df.style.format({A:{:,.2f}}) 表示人民币符号。
{:,.2f} 是一个格式说明符用于格式化浮点数具体含义如下
: 表示格式说明符的开始。
, 表示千位分隔符用于在数字中插入逗号提高可读性。
.2f 表示保留两位小数的浮点数日期
df1.style.format({日期:{:%Y年%m月%d}})订单ID 日期
0 a01 2015年11月13
1 a02 2015年11月20
2 a03 2015年11月11
3 a04 2015年07月27
4 a05 2015年11月16df1.日期.dt.strftime(%Y年)
0 2015年
1 2015年
2 2015年
3 2015年
4 2015年
Name: 日期, dtype: object