数据分类与聚合学习

该文展示了如何使用pandas读取CSV数据,进行排序,处理分类数据并创建矩阵。接着,通过matplotlib绘制条形图展示各分类频率。此外,文中还涉及了数据聚合操作,如count、join、merge以及多重分组,分析了数据集中店铺分布和书籍出版年份的相关统计信息。
摘要由CSDN通过智能技术生成
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt

file_path="D:\学习\数据分析资料\数据分析资料\day04\code\IMDB-Movie-Data.csv"
t=pd.read_csv(file_path)
print(type(t))
t=t.sort_values(by="Metascore",ascending=False)

temp_list=t["Genre"].str.split(",").tolist()
genre_list=list(set([i for j in temp_list for i in j]))

zeros_t=pd.DataFrame(np.zeros((t.shape[0],len(genre_list))),columns=genre_list)
print(zeros_t.shape)
for i in range(t.shape[0]):
    zeros_t.loc[i,temp_list[i]]=1

genre_count=zeros_t.sum(axis=0)
genre_count=genre_count.sort_values(ascending=False)
print(genre_count)

plt.figure(figsize=(20,10),dpi=100)
_x=genre_count.index
_y=genre_count.values

plt.bar(range(len(_x)),_y)
plt.xticks(range(len(_x)),_x)
plt.show()
import pandas as pd
import numpy as np


# #join & merge 函数
# t=pd.DataFrame(np.ones((2,4)),index=["a","b"],columns=list("abcd"))
# #index columns用[]中括号和list,注意区别
# t2=pd.DataFrame(np.zeros((3,3)),index=list("a23"),columns=list("ABC"))
# a=t.join(t2)
# #join 函数,按照index 索引进行拼接,行索引不变,列增加
# #merge函数,
# print(a)


#数据聚合
file_path="D:\学习\数据分析资料\数据分析资料\day05\code\starbucks_store_worldwide.csv"
t=pd.read_csv(file_path)
# grp=t.groupby(by="Country")  #group 以后变成元组(str,DataFrame)
# for i in grp:
#     print(i)
#     for j in i:
#         print(j)

# #调用聚合方法
# country_num=grp["Brand"].count()#通过brand 列数据统计每个国家的数量
# print(country_num)
# print(country_num["CH"]) #打印中国的店铺数量数据

#统计中国每个省店铺数量
# china_data=t[t["Country"]=="CN"] #获取中国区的数据
# group_china=china_data.groupby(by="State/Province")["Brand"].count()
# print(group_china)

#多重分组
t1=t.groupby(by=[t["Country"],t["State/Province"]])["Brand"].count()
print(t1,type(t1)) #t1类型是series数据
t2=t["Brand"].groupby(by=[t["Country"],t["State/Province"]]).count()
print(t2,type(t2)) #t2类型是series数据
t3=t[["Brand"]].groupby(by=[t["Country"],t["State/Province"]]).count()
print(t3,type(t3)) #t3类型是DataFrame

#分组聚合方法
# count 分组中非NA值的数量
# sum 非NA值得和
# mean 非NA值得平均
# median 非NA值得算术中位数
# std/var
# min max非NA最大值,最小值


import numpy as np
import pandas as pd
import string
from matplotlib import pyplot as plt
from matplotlib import font_manager

my_font=font_manager.FontProperties(fname="C:\Windows\Fonts\AdobeHeitiStd-Regular.otf")

# file_path="D:\学习\数据分析资料\数据分析资料\day05\code\starbucks_store_worldwide.csv"
# t=pd.read_csv(file_path)

# t1=t[["Brand"]].groupby(by=[t["Country"],t["State/Province"]]).count()
#
# print(t1.index)
# print(t1.columns)

# t2=pd.DataFrame(np.arange(24).reshape(4,6),index=list(string.ascii_uppercase[:4]),columns=list("PKSSyy"))
# print(t2)
# t2.index=["x","y","z","t"]
# print(t2)
#
# t3=t2.reindex(list("xk"))
# print(t3)
#
# #使用其中的某一列作为index
# t4=t2.set_index("P") #P列作为索引,P列消失
# print(t4)
# t5=t2.set_index("P",drop=False) #P列作为索引,P列保留
# print(t5)
#
# #unique()函数
# t6=pd.DataFrame(np.zeros((5,5)),index=list(string.ascii_uppercase[:5]),columns=list("PKSSy"))
# # print(t6)
# # k=t6["P"].unique()
# # print(k)
#
# t7=pd.DataFrame(np.arange(25).reshape(5,5),index=list(string.ascii_uppercase[:5]),columns=list("PKSSy"))
# print(t7)
# k=t7["P"].unique()
# print(k)
#
# t8=t7.set_index("P",drop=False)
# print(t8)
# #求index中不重复的数据
# print(t8.set_index("K").index.unique())
#
# #设置多重索引
# t9=t7.set_index(["P","K"])
# print(t9)
# t10=t9.swaplevel()  #转换行索引的排序
# print(t10)


#使用matplotlib呈现出店铺总数排名前10的国家

# file_path="D:\学习\数据分析资料\数据分析资料\day05\code\starbucks_store_worldwide.csv"
# t=pd.read_csv(file_path)

# t1=t.groupby(by="Country").count()["Brand"].sort_values(ascending=False)[:10]
#
# _x=t1.index
# _y=t1.values
#
# plt.figure(figsize=(20,8),dpi=80)
# plt.bar(range(len(list(_x))),_y)
# plt.xticks(range(len(list(_x))),list(_x))
# plt.show()

# #使用matplotlib呈现出中国每个城市的店铺数量
# t2=t[t["Country"]=="CN"]
# t3=t2.groupby(by="City")["Brand"].count().sort_values(ascending=False)
#
# _x=t3.index
# _y=t3.values
#
# plt.figure(figsize=(20,8),dpi=80)
# plt.bar(range(len(_x)),_y)
# plt.xticks(list(range(len(_x)))[::5],list(_x)[::5],fontproperties=my_font)
# plt.show()

# 现在我们有全球排名靠前的10000本书的数据,那么请统计一下下面几个问题:
# 不同年份书的数量
# 不同年份书的平均评分情况

file_path=r"D:\学习\数据分析资料\数据分析资料\day05\code\books.csv"
p=pd.read_csv(file_path)
# p=p[pd.notnull(p["original_publication_year"])]
# t=p.groupby(by="original_publication_year").count()["id"].sort_values(ascending=False)
# print(t)

t2=p.groupby(by="original_publication_year")["average_rating"].mean()
# t3=p["average_rating"].groupby(by="original_publication_year").count()
print(t3)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值