pandas 常用语句操作(持续更新)

导入导出

跨目录导入指定文件

将多个dataframe数据导出为多个sheets

import sys
sys.path.append('/日常/月周期/data/')
Holtwinter1 = pd.read_excel('/日常/月周期/data/yzq_pred_426-83.xlsx')
with pd.ExcelWriter(r'./jieguo_R2/yzq原模型_R2_426-83.xlsx') as writer:
    actual_Holtwinter1.to_excel(writer, sheet_name='日R2',index=False)
    actual_Holtwinter10.to_excel(writer, sheet_name='总R2',index=False)

异常值处理

将所以超出95%的值映射成95%的点上

def yichang(andatamat):
    P = []
    for k in andatamat['value']:
        if k>=andatamat['value'].mean()+3*andatamat['value'].std():
            k = andatamat['value'].describe([0.95]).loc['95%']
        P.append(k)
    andatamat['value'] = P
    return andatamat

预处理操作

1、查询某一列的指定类别的所有样本数据

# 第一种
data = data[data['kpi_code'].isin(['PM-4A220-CNT-SMSNEW-01002-01'])]
# 第二种
actual_Holtwinter = actual_Holtwinter.loc[actual_Holtwinter['kpi_code']=='PM-RZWG-CNT-00-NO-01']

2、交换dataframe列之间的位置

var_date = dataall_ultra['var_date']  
dataall_ultra.drop(labels=['var_date'], axis=1,inplace = True)
dataall_ultra.insert(1, 'var_date', var_date)

3、合并多个dataframe,并重新排序

Holtwinter = pd.concat([Holtwinter,Holtwinter3]) # 两表合并
Holtwinter = Holtwinter.reset_index(drop=True)

# 多表合并
piece=[df1,df2,df3]
pd.concat(piece)

4、批量修改列里类别为指定值
字典定义,replace替换

A = {
	'a列':{
		'a':1,
		'b':0
		}
	}
B = B.replace(A)

5、通过遍历每一列,查看每一列的每个类别的数量

A['a'].value_counts()

6、删除值相同的所有列
eg:某一列的值全部为0,这种
注意,pandas会将nan值也视为一个类别,所以在判断这一列的值是否唯一之前,要先删除nan值

orig_col = A.columns
drop_col = []
for col in orig_col:
	col_series = A[col].dropna().unique()
```if len(col_series) == 1:
		drop_col.append(col)
A = A.drop(drop_col,axis=1)

7、按指定列的类别划分数据

# 分组:将类别划分 
dh = suoyou.groupby(suoyou['prediction_model_id'])  
ds = pd.DataFrame(columns=suoyou.columns)
for key, value in dh:  
# 分组后dh是字典格式,在通过区分键值对创建dataframe进行拼接
    if key=='Holtwinter':
        Holtwinter = pd.concat([ds, value])
        Holtwinter = Holtwinter.reset_index(drop=True)
    if key == '环比':
        huanbi = pd.concat([ds, value])
        huanbi = huanbi.reset_index(drop=True)
    if key == '周周期':
        yuezhouqi = pd.concat([ds, value])
        yuezhouqi = yuezhouqi.reset_index(drop=True)
    if key == '月周期':
        zhouzhouqi = pd.concat([ds, value])
        zhouzhouqi = zhouzhouqi.reset_index(drop=True)

时间处理

1、根据一个日期提取指定间隔日期

now_time_query =2021-02-15’
begin_time_query = datetime.datetime(int(str(now_time_query)[0:4]),
                                                 int (now_time_query[5:7]), 
                                                 int (now_time_query[8:10]))-datetime.timedelta(days=99)
print('begin_time_query',begin_time_query)
begin_time_query = begin_time_query.strftime("%Y-%m-%d")

2、将dataframe类型的时间戳格式的列改为str

actual['begin_time'] = actual['begin_time'].apply(lambda x: x.strftime("%Y-%m-%d %H:%M:%S"))

3、获取指定间隔时间的所有日期

def get_date_list(begin_date,end_date):
    date_list = [x.strftime('%Y-%m-%d') for x in list(pd.date_range(start=begin_date, end=end_date))]
    return date_list
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值