import pandas as pd
position=pd.read_csv('DataAnalyst.csv',encoding='gbk')
company=pd.read_csv('company_sql.csv',encoding='gbk')
position.head()
city | companyFullName | companyId | companyLabelList | companyShortName | companySize | businessZones | firstType | secondType | education | industryField | positionId | positionAdvantage | positionName | positionLables | bottom | top | avg | workYear | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 上海 | 纽海信息技术(上海)有限公司 | 8581 | ['技能培训', '节日礼物', '带薪年假', '岗位晋升'] | 1号店 | 2000人以上 | ['张江'] | 技术 | 数据开发 | 硕士 | 移动互联网 | 2537336 | 知名平台 | 数据分析师 | ['分析师', '数据分析', '数据挖掘', '数据'] | 7 | 9 | 8.0 | 应届毕业生 |
1 | 上海 | 上海点荣金融信息服务有限责任公司 | 23177 | ['节日礼物', '带薪年假', '岗位晋升', '扁平管理'] | 点融网 | 500-2000人 | ['五里桥', '打浦桥', '制造局路'] | 技术 | 数据开发 | 本科 | 金融 | 2427485 | 挑战机会,团队好,与大牛合作,工作环境好 | 数据分析师-CR2017-SH2909 | ['分析师', '数据分析', '数据挖掘', '数据'] | 10 | 15 | 12.5 | 应届毕业生 |
2 | 上海 | 上海晶樵网络信息技术有限公司 | 57561 | ['技能培训', '绩效奖金', '岗位晋升', '管理规范'] | SPD | 50-150人 | ['打浦桥'] | 设计 | 数据分析 | 本科 | 移动互联网 | 2511252 | 时间自由,领导nic | 数据分析师 | ['分析师', '数据分析', '数据'] | 4 | 6 | 5.0 | 应届毕业生 |
3 | 上海 | 杭州数云信息技术有限公司上海分公司 | 7502 | ['绩效奖金', '股票期权', '五险一金', '通讯津贴'] | 数云 | 150-500人 | ['龙华', '上海体育场', '万体馆'] | 市场与销售 | 数据分析 | 本科 | 企业服务,数据服务 | 2427530 | 五险一金 绩效奖金 带薪年假 节日福利 | 大数据业务分析师【数云校招】 | ['商业', '分析师', '大数据', '数据'] | 6 | 8 | 7.0 | 应届毕业生 |
4 | 上海 | 上海银基富力信息技术有限公司 | 130876 | ['年底双薪', '通讯津贴', '定期体检', '绩效奖金'] | 银基富力 | 15-50人 | ['上海影城', '新华路', '虹桥'] | 技术 | 软件开发 | 本科 | 其他 | 2245819 | 在大牛下指导 | BI开发/数据分析师 | ['分析师', '数据分析', '数据', 'BI'] | 2 | 3 | 2.5 | 应届毕业生 |
#astype转换变量值类型,但是没有进行赋值,并不能产生实际的改变
>>>position.avg.astype('str')
>>>position.avg.dtype
dtype('float64')
#可以直接将改变成字符串后的series进行字符串运算
position.avg.astype('str')+'k'
0 8.0k
1 12.5k
2 5.0k
3 7.0k
...
6819 22.5k
6820 22.5k
6821 15.0k
6822 11.5k
Name: avg, Length: 6823, dtype: object
#使用匿名函数
#被应用的数组.apply(lambda 匿名函数)
position.avg.apply(lambda x:str(x)+'k')
0 8.0k
1 12.5k
2 5.0k
3 7.0k
...
6818 15.0k
6819 22.5k
6820 22.5k
6821 15.0k
6822 11.5k
Name: avg, Length: 6823, dtype: object
##自定义函数
#传入series
def func(x):
if x>20:return '20k+'
else:return str(x)+'k'
#传入的position.avg就是一个series,没有横纵轴,因此不需要axis=1
>>>position.avg.apply(func)
##扶植改变原df
#>>>position.avg=position.avg.apply(func)
#>>>position.head()
#传入df,改变参数
def func(P):
if P.avg>20:
return '20k+'
else:
return str(P.avg)+'k'
#这里的P就是传入的position这df,axis=1指逐行应用
>>>position.apply(func,axis=1)
#传入df,结合匿名函数
def func(x):
if x>20:return '20k+'
else:return str(x)+'k'
>>>position.apply(lambda x:func(x.avg),axis=1)
注意:实践过程中还会用到applymap()函数,可以使公式应用于所有元素。