Python数据分析-4

1.对于一组电影数据,呈现出rating,runtime的分布情况:

#encoding=utf-8
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
file_path = "./youtube_video_data/IMDB-Movie-Data.csv"
df = pd.read_csv(file_path)
#print(df.head(1))#读取第一行
#print(df.info())#读取Data columns,显示数据条数#rating,runtime分布情况
#选择图形,直方图
#准备数据
runtime_data = df["Runtime (Minutes)"].values
#print(runtime_data)#读取运行时间的分钟数
max_runtime = runtime_data.max()
min_runtime = runtime_data.min()
num_bin = (max_runtime - min_runtime)//10#显示直方图的组数#设置图形的大小
plt.figure(figsize=(20,8),dpi=80)
plt.hist(runtime_data,num_bin)#显示直方图
plt.xticks(range(min_runtime,max_runtime+5,5))
plt.show()
#rating的显示类比以上代码

2.统计电影分类(genre)的情况(重新构造一个全为0的数组,列名为分类,如果一条数据中分类出现过,就让0变为1):

#encoding=utf-8
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
file_path = "./youtube_video_data/IMDB-Movie-Data.csv"
df = pd.read_csv(file_path)
#print(df.head(1))
#print(df["Genre"])#输出Genre的数据
#统计分类的列表
temp_list = df["Genre"].str.split(",").tolist()#[[],[],[]...]
#print(temp_list)
genre_list = list(set([i for j in temp_list for i in j]))
#print(genre_list)
#构造全为0的数组
zeros_df = pd.DataFrame(np.zeros((df.shape[0],len(genre_list))),columns = genre_list)
#print(df.shape[0])#输出的结果为行数1000
#print(zeros_df)#给每个电影出现分类的位置赋值1
for i in range(df.shape[0]):#遍历每一行#zeros_df.loc[0,["Sci-fi","Mucical"]] = 1zeros_df.loc[i,temp_list[i]] = 1 #把第i行,第temp_list[i]列的数设置为1
#print(zeros_df.head(3))
#统计每个分类的电影的数量和
genre_count = zeros_df.sum(axis=0)
#print(genre_count)#排序
genre_count = genre_count.sort_values()
_x = genre_count.index
_y = genre_count.values
#print(_x)
#print(_y)
#画图
plt.figure(figsize=(20,8),dpi=80)
plt.bar(range(len(_x)),_y)
plt.xticks(range(len(_x)),_x)
plt.show()

3.数据合并:

join : 默认情况下它是把行索引相同的数据合并到一起

merge :按照指定的列把数据按照一定的方式合并到一起

4.全球星巴克店铺的统计数据,美国的星巴克数量和中国的哪个多,中国每个省份星巴克的数量:

#encoding=utf-8
import pandas as pd
import numpy as np
file_path = './youtube_video_data/starbucks_store_worldwide.csv'
read_data = pd.read_csv(file_path)
#print(read_data)
#print(read_data.head(1))
#print(read_data.info())
grouped = read_data.groupby(by="Country")
print(grouped)
#DataFrameGroupBy
#可以进行遍历
# for i,j in grouped:
#     print(i)
#     print("-"*100)
#     print(j,type(j))
#     print("*"*100)
#read_data[read_data["Country"]=="US"]#调用聚合方法,显示中国和美国的店铺数量
#print(grouped["Brand"].count())
# country_count = grouped["Brand"].count()
# print(country_count["US"])
# print(country_count["CN"])#统计中国每个省店铺的数量
china_data = read_data[read_data["Country"] == "CN"]
#print(china_data)
grouped = china_data.groupby(by="State/Province").count()["Brand"]
#print(grouped)
df = read_data
#数据按照多个条件进行分组
grouped = df["Brand"].groupby(by=[(df["Country"]),df["State/Province"]]).count()
# print(grouped)
# print(type(grouped))#数据按照多个条件进行分组,返回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"]]
# print(grouped1,type(grouped1))
# print(grouped2,type(grouped2))
# print(grouped3,type(grouped3))
print(grouped1.index)

5.分组和聚合:

# coding=utf-8
import pandas as pd
from matplotlib import pyplot as plt
from matplotlib import font_managermy_font = font_manager.FontProperties(fname=r"c:\windows\fonts\simsun.ttc")file_path = "./youtube_video_data/starbucks_store_worldwide.csv"df = pd.read_csv(file_path)
df = df[df["Country"]=="CN"]#使用matplotlib呈现出店铺总数排名前10的国家
#准备数据
data1 = df.groupby(by="City").count()["Brand"].sort_values(ascending=False)[:25]_x = data1.index
_y = data1.values#画图
plt.figure(figsize=(20,12),dpi=80)# plt.bar(range(len(_x)),_y,width=0.3,color="orange")
plt.barh(range(len(_x)),_y,height=0.3,color="orange")plt.yticks(range(len(_x)),_x,fontproperties=my_font)plt.show()

显示结果:

6.索引和复合索引:

6.有全球排名靠前的10000本书的数据,统计不同年份的数量,不同年份书的平均评分情况:

#encoding=utf-8
from matplotlib import pyplot as plt
import numpy as np
import pandas as pdfile_path = "./youtube_video_data/books.csv"
df = pd.read_csv(file_path)
# print(df.head(2))
# print(df.info())
# data1 = df[pd.notnull(df["original_publication_year"])]
# grouped = data1.groupby(by="original_publication_year").count().title
# print(grouped)
#不同年份书的平均评分情况
#取出original_publication_year列中nan行
data1 = df[pd.notnull(df["original_publication_year"])]
grouped = data1["average_rating"].groupby(by=data1["original_publication_year"]).mean()
#print(grouped)_x = grouped.index
_y = grouped.values
#画图
plt.figure(figsize=(20,8),dpi=80)
plt.plot(range(len(_x)),_y)
plt.xticks(range(len(_x))[::10],_x[::10].astype(int),rotation=90)
#plt.xticks(list(range(len(_x)))[::100],_x[::100],rotation=90)
plt.show()
显示结果:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/539210.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

若依Vue3图片预览大图遮罩层和表格的border css层级冲突

样式层级出现问题,表格的层级高于图片的层级 1.解决方式一:设置此文件的该属性(z-index)为继承,则显示正常 .el-table .el-table__cell { z-index: inherit; } 2.解决方式二:将此属性设置为true(本人试了…

数字生活的未来:探索Web3的全新世界

随着科技的飞速发展,我们正迈向一个数字化的未来。而在这个数字化的时代,Web3技术的崛起正引领着我们进入一个全新的世界。本文将深入探讨Web3技术的特点以及它给我们带来的全新体验。 1. 去中心化的特点 Web3的去中心化是其最显著的特点之一&#xff0…

【图论】计算图的n-hop邻居个数,并绘制频率分布直方图

计算图的n-hop邻居个数,并绘制频率分布直方图 在图论中,n-hop邻居(或称为K-hop邻居)是指从某个顶点出发,通过最短路径(即最少的边数)可以到达的所有顶点的集合,其中n(或…

Jmeter扩展开发--自定义java取样器

简介 jmeter内置了包括:http、https、tcp等各种协议的支持,通常情况只需要做简单的参数配置即可使用。但在某些特殊情况下,还是希望能做自定义压测处理,此时就涉及Jmeter的扩展开发自定义Java取样器,如下图所示&#…

给电脑加硬件的办法 先找电脑支持的接口,再买相同接口的

需求:我硬盘太小,换或加一个大硬盘 结论:接口是NVMe PCIe 3.0 x4 1.找到硬盘型号 主硬盘 三星 MZALQ512HALU-000L2 (512 GB / 固态硬盘) 2.上官网查 或用bing查 非官方渠道信息,不确定。

linux安全--Nginx与Tomcat实现负载均衡

目录 1.实验拓扑原理图,前提实现全网互通 2.找到nginx的conf目录中的nginx.conf文件 3.实验效果 1.实验拓扑原理图,前提实现全网互通 搭建全网互通可以看https://blog.csdn.net/m0_74313947/article/details/136008513?spm1001.2014.3001.5501 搭建N…

微信小程序 uniapp奶茶点单系统r4112

系统功能有:信点单小程序分为小程序部分和后台管理两部分,小程序部分的主要功能包含:用户注册登录,查看商品信息,加入购物车,结算并生成订单,订单管理,资讯管理,个人中心…

创新营销的新篇章:企业如何通过VR虚拟发布会提升品牌影响力

在数字化转型的浪潮中,VR虚拟发布会作为一种新兴的营销手段,正逐渐成为企业品牌推广和产品发布的重要选择。通过利用虚拟现实技术,企业能够在虚拟空间中举办发布会,为参与者提供沉浸式的体验。 一、创新体验:虚拟空间的…

文字弹性跳动CSS3代码

文字弹性跳动CSS3代码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面,重定向这个界面 下载地址 文字弹性跳动CSS3代码

CrossEntropyLoss 和NLLLoss的关系

交叉熵损失在做一件什么事? 看公式: x是预测(不需要softmax归一化),y是label, N是batch维度的数量,交叉熵损失,干了三件事. 1. 对输入在类别维度求softmax 2. 多softmax后的数,求log 3. 对(样本数, 类别数)为shape的tensor计算NLLLoss. 其中,NLLloss做的就是log取负, 和o…

java并发编程之 volatile关键字

1、简单介绍一下JMM Java 内存模型(Java Memory Model 简称JMM)是一种抽象的概念,并不真实存在,指一组规则或规范,通过这组规范定义了程序中各个变量的访问方式。java内存模型(JMM)屏蔽掉各种硬件和操作系统的内存访问…

如何正确地设置Outlook SMTP发送电子邮件?

Outlook SMTP发送邮件配置方法?Outlook怎么开启SMTP? 在使用Outlook发送邮件时,正确设置SMTP服务器是确保邮件能够顺利发送的关键步骤。接下来,就让AokSend一起探讨如何正确地设置Outlook SMTP发送电子邮件吧! Outlo…