31.数据的合并和分组聚合——字符串离散化的案例

字符串离散化的案例

刚刚我们学会了数据分合并,那么接下来,我们按照电影分类(genre)信息把数据呈现出来

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
file_path = "/Users/zhucan/Desktop/IMDB-Movie-Data.csv"
df = pd.read_csv(file_path)temp_list = df["Genre"].str.split(",").tolist()
genre_list = list(set([i for j in temp_list for i in j]))#构造全为0的数组
zeros_df = pd.DataFrame(np.zeros((df.shape[0],len(genre_list))),columns=genre_list)
print(zeros_df)#给每个电影出现分类的位置赋值1
for i in range(df.shape[0]):zeros_df.loc[i,temp_list[i]] = 1#统计每个分类的电影的数量和
genre_count = zeros_df.sum(axis=0)
print(genre_count)genre_count = genre_count.sort_values()
_x = genre_count.index
_y = genre_count.valuesplt.figure(figsize=(20,8),dpi=80)
plt.bar(range(len(_x)),_y)
plt.xticks(range(len(_x)),_x)
plt.show()

32.数据的合并和分组聚合——数据合并

数据合并之join

数据合并之merge

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

默认的合并方式inner,交集

merge outer,并集,NaN补全

merge left,左边为准,NaN补全。merge right,右边为准,NaN补全

33.数据分组聚合

数据分组聚合

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

import pandas as pd
import numpy as np
file_path = "/Users/zhucan/Desktop/starbucks_store_worldwide.csv"
df = pd.read_csv(file_path)
grouped = df.groupby(by="Country")country_count = grouped["Brand"].count()
print(country_count["US"])
print(country_count["CN"])
13608
2734

34.数据分组聚合02

数据分组聚合02

import pandas as pd
import numpy as np
file_path = "/Users/zhucan/Desktop/starbucks_store_worldwide.csv"
df = pd.read_csv(file_path)china_data = df[df["Country"] == "CN"]
grouped = china_data.groupby(by = "State/Province").count()["Brand"]
print(grouped)

分组和聚合

多条件分组

如果我们需要对国家和省份进行分组统计,应该怎么操作呢?

grouped = df.groupby(by=[df["Country"],df["State/Province"]])

很多时候我们只希望对获取分组之后的某一部分数据,或者说我们只希望对某几列数据进行分组,这个时候我们应该怎么办呢? 获取分组之后的某一部分数据:

df.groupby(by=["Country","State/Province"])["Country"].count()

对某几列数据进行分组:

df["Country"].groupby(by=[df["Country"],df["State/Province"]]).count()

观察结果,由于只选择了一列数据,所以结果是一个Series类型 如果我想返回一个DataFrame类型呢?

df[["Country"]].groupby(by=[df["Country"],df["State/Province"]]).count()

35.数据的索引学习

索引和复合索引

  1. 简单的索引操作: 获取index:df.index
  2. 指定index :df.index = ['x','y']
  3. 重新设置index : df.reindex(list("abcedf"))
  4. 指定某一列作为index :df.set_index("Country",drop=False)   country作为索引
  5. 返回index的唯一值:df.set_index("Country").index.unique()
import pandas as pd
import numpy as np
a = pd.DataFrame({'a': range(7),'b': range(7, 0, -1),'c': ['one','one','one','two','two','two', 'two'],'d': list("hjklmno")})
print(a)
b = a.set_index(["c","d"])
print(b)
   a  b    c  d
0  0  7  one  h
1  1  6  one  j
2  2  5  one  k
3  3  4  two  l
4  4  3  two  m
5  5  2  two  n
6  6  1  two  oa  b
c   d
one h  0  7j  1  6k  2  5
two l  3  4m  4  3n  5  2o  6  1

36.数据分组聚合练习和总结

Series复合索引

DataFrame复合索引

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

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
file_path ="/Users/zhucan/Desktop/starbucks_store_worldwide.csv"
df = pd.read_csv(file_path)data1 = df.groupby(by="Country").count()["Brand"].sort_values(ascending=False)[:10]
_x = data1.index
_y = data1.valuesplt.figure(figsize=(20,8),dpi=80)
plt.bar(range(len(_x)),_y)
plt.xticks(range(len(_x)),_x)
plt.show()

使用matplotlib呈现出每个中国每个城市的店铺数量

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from matplotlib import font_manager
file_path ="/Users/zhucan/Desktop/starbucks_store_worldwide.csv"
my_font = font_manager.FontProperties(fname="/System/Library/Fonts/PingFang.ttc")
df = pd.read_csv(file_path)
df = df[df["Country"]=="CN"]data1 = df.groupby(by="City").count()["Brand"].sort_values(ascending=False)[:25]_x = data1.index
_y = data1.valuesplt.figure(figsize=(20,8),dpi=80)
plt.bar(range(len(_x)),_y,width=0.3,color="orange")
plt.xticks(range(len(_x)),_x,fontproperties=my_font)
plt.show()

现在我们有全球排名靠前的10000本书的数据,那么请统计一下下面几个问题:

  1. 不同年份书的数量
  2. 不同年份书的平均评分情况
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from matplotlib import font_manager
file_path = "/Users/zhucan/Desktop/books.csv"
df = pd.read_csv(file_path)#不同年份书的数量
print(df.info())
data1 = df[pd.notnull(df["original_publication_year"])]
grouped = data1.groupby(by="original_publication_year").count()["title"]#不同年份书的平均评分情况
data1 = df[pd.notnull(df["original_publication_year"])]
grouped = data1["average_rating"].groupby(by=data1["original_publication_year"]).mean()_x = grouped.index
_y = grouped.valuesplt.figure(figsize=(20,8),dpi=80)
plt.plot(range(len(_x)),_y)
plt.xticks(list(range(len(_x)))[::10],_x[::10],rotation=45)
plt.show()

机器学习-数据科学库(第五天)相关推荐

  1. 机器学习-数据科学库-day6

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 机器学习-数据科学库-day6 pandas学习 动手练习 pandas中的时间序列 生成一段时间范围 关于频率的更多缩写 在Data ...

  2. 机器学习-数据科学库-day5

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 机器学习-数据科学库-day5 pandas学习 pandas之DataFrame pandas常用统计方法 将字符串离散化 数据合并 ...

  3. 机器学习-数据科学库-day1

    机器学习-数据科学库-day1 机器学习-数据科学库-day1 matplotlib 机器学习-数据科学库-day1 数据分析课程包括: 基础概念与环境 matplotlib numpy pandas ...

  4. 机器学习-数据科学库:matplotlib绘图

    机器学习-数据科学库:matplotlib绘图 matplotlib绘图 matplotlib折线图 matplotlib散点图 matplotlib条形图 matplotlib直方图 对比常用统计图 ...

  5. 机器学习-数据科学库:Pandas总结(1)

    机器学习-数据科学库:Pandas总结(1) Pandas pandas的常用数据类型 pandas之Series创建 pandas之Series切片和索引 pandas之读取外部数据 pandas之 ...

  6. HuaPu在学:机器学习——数据科学库【matplotlib】

    数据科学库[matplotlib] 文章目录 数据科学库[matplotlib] 前言 一.数据分析介绍及环境安装 1.为什么要数据分析??? 2.环境安装 二.matplotlib 1.为什么学习m ...

  7. 机器学习-数据科学库(第三天)

    14.numpy的数组的创建 什么是numpy 一个在Python中做科学计算的基础库,重在数值计算,也是大部分PYTHON科学计算库的基础库,多用于在大型.多维数组上执行数值运算(数组就是列表.列表 ...

  8. 机器学习-数据科学库(第2节)

    文章目录 一.常用统计图对比 二.绘制散点图 三.绘制条形图 1.要点 2.代码样例 3.绘制多次条形图 四.绘制直方图 五.matplotlib使用的流程总结 六.其他绘图工具 一.常用统计图对比 ...

  9. 机器学习-数据科学库(第六天)

    37.pandas时间序列01 现在我们有2015到2017年25万条911的紧急电话的数据,请统计出出这些数据中不同类型的紧急情况的次数,如果我们还想统计出不同月份不同类型紧急电话的次数的变化情况, ...

最新文章

  1. 笔记本电脑无线被禁用 是哪个服务器,无线网关,小编教你笔记本无线网络禁用后怎么开启...
  2. 液晶模块 LM6063A接口转接
  3. OpenCart之商品管理教程
  4. 面向对象的编程学习笔记
  5. 3.获得单应矩阵(每张图片需要m个棋盘格角点,m≥4)
  6. 《Java 核心技术卷1 第10版》学习笔记 ------ 泛型【进阶】
  7. html页面关闭执行函数,html页面调用js文件里的函数报错--方法名 is not defined处理方法...
  8. selenium+webdriver+java(基本小例子及初始化三种浏览器)---------------
  9. C++primer 7.4节练习
  10. 毕设过程小记—同步带传动选型计算+张紧机构
  11. 125w短波通信距离_陕西烽火通信短波及超短波产品.doc
  12. Wei Yang Bryan Lim, etc. Federated Learning in Mobile Edge Networks: A Comprehensive Survey.
  13. IDEA相对路径没有效果的问题
  14. matlab里peaks,MATLAB中peaks函數的用法
  15. 计算机基础内容相关的论文,有关于计算机基础论文范文
  16. freemarker导出excel
  17. 游戏挂机时计算机设置在哪里,电脑挂机锁如何设置 电脑挂机锁设置方法【图文】...
  18. 今日头条面试——iOS开发面试题
  19. 推荐一组用过好几年的非常稳定的dns
  20. Bezier曲线原理及实现代码(c++)

热门文章

  1. nginx 集群部署_如何备份和还原您的Kubernetes集群资源和持久卷?
  2. wpf项目源代码_C# WPF开源控件库:MahApps.Metro
  3. 栈空间不够会报错吗_网站更换域名和空间会对优化有影响吗?
  4. python判断一个或者多个字符串,是否出现在一段话中
  5. 目标层准则层MATLAB,层次分析法-MATLAB
  6. C++中的逻辑操作符重载
  7. 广州那所大学有自考计算机专业,广州自考本科大学有哪些
  8. cmd运行python服务器,python如何利用paramiko执行服务器命令
  9. bash 判断 os 版本_鸿蒙OS手机将至,华为手机用户提问,老款机器能升级吗?
  10. PyTorch中的数据输入和预处理