人工智能通识

【编程】Python实战手记-2

2019-09-26  本文已影响0人  zhyuzh3d

欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】


模块结构

模块化开发简单说就是不要把所有代码都放在一个文件里😁...所以就是怎么拆分代码的问题。

面向对象、类Class

面向对象编程就是面向Class编程😁,新文件上来就先是一行class xxx:

Python的class mycls:后面要先跟一行__init__(self):初始化方法:

这样在main里面b=a()实例化之后就可以使用b.height就可以得到1000。同样可以直接使用b.add(100,200)得到300。

初始化函数写全的话是def __init__(self, *args, **kwargs):,args就是直接用数值的参数,例如mycls(1,2)的话args就是(1,2)。kwargs则是键值对参数,例如mycls(wid=100,hei=200)的话,kwargs就是{'wid': 100, 'hei': 200},就有kwargs["wid"]是100,kwargs["hei"]是200。

如果两种参数混用会怎么样?各司其职。比如mycls(1,2,3,a=9,b=10)的话上面代码就输出(1, 2, 3){'a': 9, 'b': 10}

到底哪种参数格式好?建议使用键值对格式,虽然繁琐但含义很清楚,user(name="tom",age=13)明显比user("tom",13)容易理解。
键值对参数没有顺序限制,user(age=13,name="tom")也是对的,但user(13,"tom")就是错的。

类中的super()

如果mycls是从yourcls扩展出来的,该怎么办?

这里yourcls有height属性,mycls没有。但是class mycls(yourcls):就表示我是从你扩展来的,你有的我都有。所以在main里面就可以mycls().height了,否则就会因为没有height而报错。

Pandas搜索和修改值

读取df=pd.read_csv("./src/a.csv"),得到二维表格Dataframe格式。
存储df.to_csv("./src/a.csv",index=False),这样不保存索引列,可以避免建立索引之后重复。

搜索数据中用户名"name"等于"tom"的一行,怎么操作?

搜索df_rows=df.loc[df['name'] == "tom"],得到dataframe格式。len(df_rows)>0检测非空,df_rows.iloc[0]获取第一行结果,df_rows["age"]获取所有"tom"的年龄如13,20,44
如果要找到所有叫tom或jerry的人则用df_rows=df.loc[df['name'].isin(["tom","jerry"])]

索引df.set_index("name",drop=True)。建立索引之后就可以使用df.loc["tom"]直接找到tom一行数据了。如果不drop的话那么就会有两列"name",有一列是复制出来做索引的,保存csv时候要index=False去除重复。

修改df.iloc[0,df.columns.get_loc(key)]=val,不能直接使用等号修改,比如df.iloc[3]["age"]=13是不行的,必须df_rows.iloc[0,df.columns.get_loc('age')]=13才行。如果建立过name索引的话,可以使用df.loc["tom","age"]=13修改。

<未完待续>


欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】


每个人的智能新时代

如果您发现文章错误,请不吝留言指正;
如果您觉得有用,请点喜欢;
如果您觉得很有用,欢迎转载~


END

上一篇下一篇

猜你喜欢

热点阅读