文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github ;这博客是记录我学习的点点滴滴,如果您对 Python、Java、AI、算法有兴趣,可以关注我的动态,一起学习,共同进步。
一.数据分组
#示例数据
df = pd.read_csv("pokemon_data.csv",encoding="gbk")
df.head(10)
(1)np.where
通过条件判断来进行分组,满足条件的为一组,不满足条件的为另外一组
例如:攻击力大于或等于79的划分为强攻,攻击力小于79的划分为弱攻
df["Attack_score"] = np.where(df["attack"] >= 79,"A","D")
二.数据分列与合并
分列
#示例数据
df4 = pd.DataFrame({"name":["ray","jack","lucy","bob","candy"],
"h&w":["175-70","180-80","168-74","177-72","182-90"],
"score":[10,30,20,15,50]},
columns=["name","h&w","score"])
df4
name | h&w | score | |
---|---|---|---|
0 | ray | 175-70 | 10 |
1 | jack | 180-80 | 30 |
2 | lucy | 168-74 | 20 |
3 | bob | 177-72 | 15 |
4 | candy | 182-90 | 50 |
需求:现在需要将h&w这一列的数据拆分开,分为身高列和体重列,并且拆分后的列需要在源数据里呈现出来
三. 排序
#示例数据
df = pd.read_csv("pokemon_data.csv",encoding="gbk")
df.head(10)
根据值排序
Q1:希望数据表按照“总计”字段的值来升序排列
df.sort_values(by="总计") #默认就是升序排列
Q2:希望数据表按照“总计”字段的值来降序排列
df.sort_values(by="总计",ascending=False) #添加ascending=False参数来降序排列
Q3:设置排序的一级关键词是总计,二级关键词为攻击力
#如果都做升序排列
df.sort_values(by=["总计","攻击力"])
#如果都做降序排列
df.sort_values(by=["总计","攻击力"],ascending=False)
#如果按照总计列做升序排列,但是总计相等的行按照攻击力做降序排列
df.sort_values(by=["总计","攻击力"],ascending=[True,False])
Q4:如果希望直接在修改源数据的基础上进行排序,添加参数inplace=True即可
#以升序排列为例
df.sort_values(by="总计",inplace=True)
df
升序排列
df.sort_index(inplace=True)
df
降序排列
df.sort_index(ascending=False,inplace=True)
df
四,排名
df_rank["rank"] = df_rank["总计"].rank(ascending=False,method="dense")
df_rank
五,转置
#示例数据
df5 = pd.DataFrame({"cost":[800,1000,1200],"sale":[1000,2000,2500]},index=["1月","2月","3月"])
df5
cost | sale | |
---|---|---|
1月 | 800 | 1000 |
2月 | 1000 | 2000 |
3月 | 1200 | 2500 |
#行索引和列索引进行转置
df5 = df5.T
df5
1月 | 2月 | 3月 | |
---|---|---|---|
cost | 800 | 1000 | 1200 |
sale | 1000 | 2000 | 2500 |