数据分析(五)之numpy和matplotlib动手练习以及数组的拼接、随机方法

练习所需要的数据集

数据分析(1-5)代码用到的数据集

动手练习1

  1. 读取英国和美国各自youtube1000的数据,结合之前matplotlib绘制出各自的评论数量的直方图
  2. 希望了解英国的youtube中视频的评论数和喜欢数的关系,应该如何绘制改图
    解答:对于评论数和喜欢数的关系我们应该画一个散点图
import numpy as np
from matplotlib import pyplot as plt

us_file_path = "./youtube_video_data/US_video_data_numbers.csv"
uk_file_path = "./youtube_video_data/GB_video_data_numbers.csv"

# t1 = np.loadtxt(us_file_path,delimiter=",",dtype="int",unpack=True)
t_us = np.loadtxt(us_file_path, delimiter=",", dtype="int")

# 取评论的数据   评论的数据为最后一列
t_us_comments = t_us[:, -1]

# 选择比5000小的数据
t_us_comments = t_us_comments[t_us_comments <= 5000]

print(t_us_comments.max(), t_us_comments.min())

d = 50

bin_nums = (t_us_comments.max() - t_us_comments.min()) // d

# 绘图
plt.figure(figsize=(20, 8), dpi=80)

plt.hist(t_us_comments, bin_nums)

plt.show()

结果输出
在这里插入图片描述

import numpy as np
from matplotlib import pyplot as plt
import matplotlib

font = {
    
    'family': 'MicroSoft YaHei',
        'weight': 'bold',
        'size': 'larger'}
my_font = matplotlib.rc("font", family='MicroSoft YaHei', weight="bold")

us_file_path = "./youtube_video_data/US_video_data_numbers.csv"
uk_file_path = "./youtube_video_data/GB_video_data_numbers.csv"

# t1 = np.loadtxt(us_file_path,delimiter=",",dtype="int",unpack=True)
t_uk = np.loadtxt(uk_file_path, delimiter=",", dtype="int")

# 选择喜欢数比50万小的数据  喜欢的数据为第一列
t_uk = t_uk[t_uk[:, 1] <= 500000]

t_uk_comment = t_uk[:, -1]
t_uk_like = t_uk[:, 1]

plt.figure(figsize=(20, 8), dpi=80)
plt.scatter(t_uk_like, t_uk_comment)

# 添加图例
plt.legend(loc="upper left", prop=my_font)

# 添加描述信息
plt.xlabel("喜欢数", fontproperties=my_font)
plt.ylabel("评论数", fontproperties=my_font)
plt.title("喜欢数和评论数的关系", fontproperties=my_font)

plt.show()

结果输出:
在这里插入图片描述

使用同样的方法可以提取英国的youtube的数据

数据的拼接

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上述代码 行交换为第一行和第二行进行交换,列交换为第0列和第2列进行交换

动手练习2

  1. 现在希望把之前案例中两个国家的数据方法一起来研究分析,同时保留国家的信息(每条数据的国家来源),应该怎么办
# coding=utf-8
import numpy as np

us_data = "./youtube_video_data/US_video_data_numbers.csv"
uk_data = "./youtube_video_data/GB_video_data_numbers.csv"

# 加载国家数据
us_data = np.loadtxt(us_data, delimiter=",", dtype=int)
uk_data = np.loadtxt(uk_data, delimiter=",", dtype=int)

# 添加国家信息 在数组中添加一列全为0或全为1的数据,
# 第一步、构造全为0的数据
zeros_data = np.zeros((us_data.shape[0], 1)).astype(int)
ones_data = np.ones((uk_data.shape[0], 1)).astype(int)
print(zeros_data, ones_data)

# 第二步、分别添加一列全为0,1的数组
us_data = np.hstack((us_data, zeros_data))   # 美国为全为0的数据
uk_data = np.hstack((uk_data, ones_data))    # 英国全为1的数据

# 拼接两组数据
final_data = np.vstack((us_data, uk_data))
print(final_data)

拼接后的结果为:最后一列0为美国、1为英国
[[4394029  320053    5931   46245       0]
 [7860119  185853   26679       0       0]
 [5845909  576597   39774  170708       0]
 ...
 [ 109222    4840      35     212       1]
 [ 626223   22962     532    1559       1]
 [  99228    1699      23     135       1]]

Process finished with exit code 0

numpy中的随机方法

在这里插入图片描述

import numpy as np

print(np.ones((3, 4)))

print(np.zeros((3, 4)))

print(np.eye(3))

结果输出

[[1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]]
 
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]
 
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

在这里插入图片描述
在这里插入图片描述

解释seed随机种子

import numpy as np

t = np.random.randint(0, 20, (3, 4))

print(t)
打印输出结果:
[[ 6  1  6 18]
 [ 5  8 10  5]
[ 1 19 10 17]]
当加入随机种子之后
import numpy as np

np.random.seed(10)
t = np.random.randint(0, 20, (3, 4))

print(t)

重复打印输出的结果:都为下列数组

[[ 9  4 15  0]
 [17 16 17  8]
 [ 9  0 10  8]]

numpy中的一些注意点

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_40926887/article/details/111173055