课时38数据合并
on表示按照什么进行合并。
上图就表示在a这个列进行操作。但是df1与df3的a完全不一样,所以不能操作。
因为在默认情况下,merge取的是并集(?)。
查了一下,默认应该是“inner”,inner代表取的是交集。
想要取“并集”,应该设置为“outer”。
课件给出的知识是错的。
因为在df1里面,“a”这一列里面,A,B两行的值都为1(即使一个是int,一个是float类型也无所谓),所以在合并的结果里,df1的A行,B行和df3的0行进行了合并。
而如果只有一个值相同,如下图。
那么只会在有相同的数值的那一行进行合并。
另外,通过对how参数进行设置,可以成为并集。
并集会把没有的值设置为nan。
此外,还有“左连接”和“右连接”。
也就是以“左边或右边为准”。
课时39数据分组和聚合
import pandas as pd
import numpy as np
file_path=""
df=pd.read_csv(file_path)
grouped=df.groupby(by="country")#通过国家名字进行分组
#DataFrameGrouBy
#可以进行遍历
#调用聚合方法
country_count=grouped["Brand"].count()
print(country_count["US"])
print(country_count["CN"])
课时40
统计中国每个省份的星巴克数量。
import pandas as pd
import numpy as np
file_path=""
df=pd.read_csv(file_path)
#grouped=df.groupby(by="country")#通过国家名字进行分组
#DataFrameGrouBy
#可以进行遍历
#调用聚合方法
#country_count=grouped["Brand"].count()
#print(country_count["US"])
#print(country_count["CN"])
#统计中国每个省份的星巴克数量
china_data=df[df["country"]=="CN"]
grouped=china_data.groupby(by="State/Province").count()["Brand"]
print(grouped)
#数据按照多个条件进行分组
df["Brand"].groupby(by=[df["Country"],df["State/Province"]])
#数据按照多个条件进行分组,返回DataFrame
grouped1=df["Brand"].groupby(by=[df["Country"],df["State/Province"]]).count()
grouped2=df.groupby(by=[df["Country"],df["State/Province"]])[["Brand"]].count()
grouped3=df.groupby(by=[df["Country"],df["State/Province"]]).count()[["Brand"]]