数据分析10

目录

分组聚合案例之groupby

groupby案例一

groupby案例二

索引和复合索引


分组聚合案例之groupby


        现在我们有一组关于全球星巴克店铺的统计数据,如果我想知道美国的星巴克数量和中国的哪个多,或者我想知道中国每个省份星巴克的数量的情况,那么应该怎么办?

grouped = df.groupby(by="columns_name")

grouped是一个DataFrameGroupBy对象,是可迭代的

grouped中的每一个元素是一个元组 元组里面是(索引(分组的值),分组之后的DataFrame)

groupby案例一


获取数据

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
 
file_path = "./starbucks_store_worldwide.csv"
df = pd.read_csv(file_path)
print(df.info())
print(df.head(1))

 中国每个省份星巴克的数量的情况

# 中国每个省份星巴克的数量的情况
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
 
#获取数据
file_path = "./starbucks_store_worldwide.csv"
df = pd.read_csv(file_path)
 
#取出中国的数据
cn_df = df[df["Country"]=="CN"]
 
#按照省分组
grouped = cn_df.groupby(by="State/Province").count()
print(grouped["Brand"])

 

 

 groupby案例二

#统计星巴克的数量,按照国家和省份进行分组
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
 
#获取数据
file_path = "./starbucks_store_worldwide.csv"
df = pd.read_csv(file_path)
 
#数据按照多个条件进行分组
grouped = df.groupby(by=[df["Country"],df["State/Province"]]).count()
print(grouped["Brand"])
print(type(grouped["Brand"]))#<class 'pandas.core.series.Series'>
 
#使其返回DataFrame,在"Brand"上多加个方括号
#数据按照多个条件进行分组
grouped = df.groupby(by=[df["Country"],df["State/Province"]]).count()
print(grouped[["Brand"]])
print(type(grouped[["Brand"]]))

 

 

前两列都是索引,第三列是数据,之所以有两列索引是因为分组时有两个条件,整个数据是Series类型。

索引和复合索引


索引的简单操作

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
 
#index表示的是列标签,columns表示的是行标签
df1 = pd.DataFrame(np.ones(((3,3))),index=["A","B","C"],columns=list("nmx"))
# print(df1,df1.index)
# print("*"*100)
 
#修改索引
df1.index = ["a","b","c"]
print(df1,df1.index)
print("*"*100)
 
#重新设置索引
print(df1.reindex(list("abx")))
print(df1,df1.index)
print("*"*100)
 
#指定某一列作为索引,drop表示是否在数据中删除该索引
print(df1.set_index("n",drop=False))
print(df1.index)
df1 = pd.DataFrame(np.ones(((3,3))),index=["A","B","C"],columns=list("nmx"))
print(df1.set_index("n"))
print(df1.index)
print("*"*100)
 
#可以设置两列索引
df1 = pd.DataFrame(np.ones(((3,3))),index=["A","B","C"],columns=list("nmx"))
print(df1)
print(df1.set_index(["n","m"]))
print("*"*100)
 
 
#返回index唯一值
print(df1)
print(df1.index.unique())
print(df1.loc["A"].unique())


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值