python basic3-zstarling

本文介绍了如何使用Python中的map函数创建字典进行匹配,分组模糊匹配方法,处理折线图数据标签,解决set_xticks和set_xticklabels的问题,以及数据类型转换、判断值存在性、CSV追加写入、多条件查询、多级索引计算父行占比等数据处理技巧。
摘要由CSDN通过智能技术生成


python

1. map 函数匹配。成字典。

  • 法1:
dict_1=dict(zip(qhcs_nc['姓名'],qhcs_nc['是否切换区域']))
jsmb1['是否切换城市']=jsmb1['员工\n编号'].map(dict_1)
  • 法2:
dict1=pd.read_excel(data1,sheet_name="职级").set_index('职级')['对应等级'].to_dict()
raw_data['对应等级']=raw_data['职级'].map(dict1)

2. 分组模糊匹配。

(if 函数)

3. 折线图的数据标签显示


4. set_xticks() 无法识别列表

传输列表只能是数值列表{且是原始列表}

5. set_xticklabels()会缺少一个值

(必须结合set_xticks使用,否则会丢失第一个值)

def zuhe(i, j, x, y, z, w):
    fig, ax1 = plt.subplots(figsize=(14, 8))
    ax2 = ax1.twinx()
    x1 = np.arange(len(x))
    bar1 = ax1.bar(x1, y, color='orange', label="人数", width=0.3)
    bar2 = ax1.bar(x1+0.3, z, color='gray', label="平均产能", width=0.3)
    pl1 = ax2.plot(x1+0.15, w, color='yellow', label="成本率")
    title = "%s人员产能及薪酬-%s" % (j, i)
    ax1.set_title(title)
    ax1.bar_label(bar1)
    ax1.bar_label(bar2, fmt='%d')
    ax1.set_xticks(x1+0.15)  # x轴标签的位置右移0.15(没有set_xticklabels时会以此值为轴标签显示)
    ax1.set_xticklabels(x.values) # x轴标签的值
    ax1.legend(loc='best', frameon=False)
    ax2.legend(loc='right', frameon=False)
    plt.savefig("%s.png" % title, format="png")


for i in yewu:
    for j in dengji:
        x = raw_data[(raw_data['业务'] == "%s" % i) & (
            raw_data['对应等级'] == "%s" % j)]['职级']
        y = raw_data[(raw_data['业务'] == "%s" % i) & (
            raw_data['对应等级'] == "%s" % j)]['人数']
        z = raw_data[(raw_data['业务'] == "%s" % i) & (
            raw_data['对应等级'] == "%s" % j)]['平均产能']
        w = raw_data[(raw_data['业务'] == "%s" % i) & (
            raw_data['对应等级'] == "%s" % j)]['成本率(元效)']
        # zhuzhuang(i, j, x, y, z)
        zuhe(i, j, x, y, z, w)

6. dtype()查看数据类型 ,astype()修改数据类型。

7. object是指数值里有一个值是字符串类型,整体可以指字符串类型。

8. 判断某一字段的值是否存在在另一字段中

  • 法1
# 缺少的城市法1(复杂度较高)
pro_city2=tai1[tai1.astype(str).apply(lambda x:x.pro_city2 not in x.pro_city1,axis=1)]['pro_city1'].unique
da2=tai1[tai1.astype(str).apply(lambda x:x.二网经销商市 not in x.城市,axis=1)]
da2.drop_duplicates(['二网经销商市'])['二网经销商市']
da2.drop_duplicates(['二网经销商省'])['二网经销商省']
  • 法2
## 缺少的城市法2
list_pro=[]
for i in pro1:
    if i not in list(pro2):
        list_pro.append(i)
len(list_pro)
  • 法3
## 缺少的城市法3
tai["判断列"]=np.where(tai['二网经销商市'].isin(list(data1['城市'])),1,0)
len(set(tai[tai["判断列"]==0]['二网经销商市']))

9. contains多个字符串包含

# contains多个字符串包含,用|表示,且在一个引号内
jsmb['是否虚拟']=np.where(jsmb['岗位'].str.contains('常规|虚拟'),"是","否")
jsmb['是否虚拟'].value_counts()

10. 追加写入csv

# 追加写入csv 
for  i in range(1,7):
    lujing=r"D:\ZXL工作文件\Jupyter\补录表\存量%s收入.xlsx" %i
    buchong=pd.read_excel(lujing)
    buchong.to_csv('da1.csv',encoding='GBK',index=False,mode="a",header=False)

11. query 多条件索引及多字段查询

yytz_cp_pivot=yytz_cp.pivot_table(values=['融资金额付款审批','融资金额*期限','融资额*期限*X','融资额*期限*利率','产品'],
                                index=["新车or二手车","渠道描述区域",'万元系数1'],
                                columns="月份",
                                aggfunc={'融资金额付款审批':"sum",'融资金额*期限':"sum",'融资额*期限*X':"sum",'融资额*期限*利率':"sum",'产品':"count"},
                                margins=True)

yytz_cp_pivot.query('新车or二手车=="二手车"')
yytz_cp_pivot.query('新车or二手车=="二手车" and 渠道描述区域=="%s"'%quyu)
yytz_cp_pivot[('产品',4)]

yytz_cp_pivot['单量父级占比4']=round(yytz_cp_pivot[('产品',4)].sum(level=["新车or二手车","渠道描述区域",'万元系数1'],axis=0)/yytz_cp_pivot[('产品',4)].sum(level=["新车or二手车","渠道描述区域"],axis=0),4)
yytz_cp_pivot['单量父级占比5']=round(yytz_cp_pivot[('产品',5)].sum(level=["新车or二手车","渠道描述区域",'万元系数1'],axis=0)/yytz_cp_pivot[('产品',5)].sum(level=["新车or二手车","渠道描述区域"],axis=0),4)
yytz_cp_pivot['单量父级占比6']=round(yytz_cp_pivot[('产品',6)].sum(level=["新车or二手车","渠道描述区域",'万元系数1'],axis=0)/yytz_cp_pivot[('产品',6)].sum(level=["新车or二手车","渠道描述区域"],axis=0),4)

12. dataframe 多级索引父行占比

yytz1=yytz_cp.pivot_table(values=['产品'],
                        index=["新车or二手车","渠道描述区域",'万元系数1'],
                        columns="月份",
                        aggfunc={'产品':"count"})
yytz1['分子']=yytz1['产品'].sum(level=["新车or二手车","渠道描述区域",'万元系数1'],axis=0)
yytz1['分母']=yytz1['产品'].sum(level=["新车or二手车","渠道描述区域"],axis=0)
yytz1['占比']=yytz1['分子']/yytz1['分母']


  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值