社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python私活300元,给Excel表格打标签

蚂蚁学Python • 3 年前 • 918 次点击  


今天,再次收到蚂蚁老师推送的python开放需求,主要考验的是python操作excel的知识点,单子比较紧急,中午11:30收到,下午3:30要求完成。需求为:运用python操作excel文件,按公司分类进行数据统计,并按条件进行打标签。判定的条件主要为:1.高速增长:营业利润增长率大于10% 2.ST:连续两年营业利润为负 3.受疫情影响:报告期年份在2019及以后且营业利润为负 4.扭亏为盈:上期营业利润为负但本期营业利润为下 数据表如下:通过分析表中数据发现:同一公司没有集中在一起,报告年份也没有按序排列,所以,在进行标签判定前,首先要对数据进行处理。

df=pd.read_excel("基础数据.xlsx")
info={}
company=set(df["公司名称"])
for i in company:
    info[i]=df[df["公司名称"]==i]["公司名称"].count()
df["利润"]=df["营业收入(万元)"]-df["营业支出(万元)"]
df1=df.sort_values(["公司名称","报告期年份"])
以上代码,首先利用set对df公司名称去重,得到所有公司名称,将公司名称与出现次数存入字典,为后续操作提供便利。
同时增加利润列,算出每期利润值,作为之后标签判断的主要数据。
接着根据需求,运用sort_values对公司名称、报告年份进行排序重组,生成新的df1,也是后续操作的基础(之前也考虑使用groupby进行分组操作,后来改为现在思路)。
df1.reset_index(drop=True,inplace=True)

在后来操作中发现,因为排序打乱了索引,此处需要重置一下索引。接下来便是循环遍历打标签:

for i in range(len(df1.index)):
    if df1.loc[i, "报告期年份"] >= 2019 and df1.loc[i, "利润"]         df1.loc[i, "受疫情影响"] = "是"

for j in info.keys():
    for i in range(len(df1.index)-1):
        try:
            if df1.loc[i,"公司名称"]==j and df1.loc[i+1,"公司名称"]==j and df1.loc[i,"利润"]*1.1"利润"] and df1.loc[i+1,"利润"]>0:
                df1.loc[i+1,"高速增长"]="是"
            if df1.loc[i,"公司名称"]==j and df1.loc[i,"利润"]<0 and df1.loc[i+1,"利润"]>0:
                df1.loc[i+1, "扭亏为盈"] = "是"
            if df1.loc[i, "公司名称"] == j and df1.loc[i, "利润"] "利润"]                 df1.loc[i+1, "ST"] = "是"
        except:
            continue

第一个循环具有通用性,直接遍历df中所有数据即可;接下来的操作,则需要循环遍历公司名称,遍历年份数据进行数据匹配,对应打标签。最后,将打好标签的数据处用pandas的to_excel导出为新的EXCEL文件,效果如下:

谢谢蚂蚁老师不断为大家提供实战的机会,这不仅是python友们学习提升的机会,更是思维改变生活、思维创造生活、思维服务生活的最好体现,相信每一位蚂蚁群的朋友们,在帅帅老师的引领下,一定会创造属于自己的更加美好、更加充实、更具挑战的新生活。


今晚来蚂蚁老师抖音直播间,Python带副业全套餐有优惠!!!




Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/136254
 
918 次点击