ccc-数据科学库(HM)-day3

一、numpy学习

项目一:numpy读取本地的CSV文件

代码:

# coding=utf-8
import numpy as np

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)
t2 = np.loadtxt(us_file_path,delimiter=",",dtype="int")

print(t1)
print("c"*100)
print(t2)

效果:
ccc-数据科学库(HM)-day3_第1张图片
每行4个数字分别代表点击,喜欢,不喜欢,评论数量的点击量

要点:
  • loadtxt函数参数解释
    ccc-数据科学库(HM)-day3_第2张图片
  • unpack就是线性代数中的转置
  • 有时候需要我们强制转换数据类型符合实际情况

项目二:为评论添加国家信息并且拼接到一起

代码:

# coding=utf-8
import numpy as np

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

us_data = np.loadtxt(us_file_path,delimiter=",",dtype="int")
uk_data = np.loadtxt(us_file_path,delimiter=",",dtype="int")

zeros_data = np.zeros((us_data.shape[0],1)).astype(int)
ones_data = np.ones((uk_data.shape[0],1)).astype(int)
us_data = np.hstack((us_data,zeros_data))
uk_data = np.hstack((uk_data,ones_data))

final_data = np.vstack((us_data,uk_data))
print(final_data)

效果:
ccc-数据科学库(HM)-day3_第3张图片

要点:
  • 拼接的数据之间的类型应该相同,否则会出现类型转换
  • 注意双括号

项目三:nan值的填充

代码:

# coding=utf-8
import numpy as np

t1 = np.arange(12).reshape((3,4)).astype("float")
t1[1,2:] = np.nan

def fill_ndaarray(t1):
    for i in range(t1.shape[1]):
        temp_col = t1[:,i]
        nan_num = np.count_nonzero(temp_col != temp_col)
        if nan_num !=0:
            temp_not_nan_col = temp_col[temp_col == temp_col]
            temp_col[np.isnan(temp_col)] = temp_not_nan_col.mean()
    return t1

if __name__ =='__main__':
    t1 = np.arange(12).reshape((3, 4)).astype("float")
    t1[1, 2:] = np.nan
    print(t1)
    t1 = fill_ndaarray(t1)
    print(t1)

效果:
ccc-数据科学库(HM)-day3_第4张图片

要点:
  • 利用nan值之间不相等的性质可以区分nan与非nan数据

项目四:numpy取视频评论数量根据matplotlib画直方图

初始代码:

# coding=utf-8
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"

t_us = np.loadtxt(us_file_path,delimiter=",",dtype="int")

t_us_comment = t_us[:,-1]
print(t_us_comment.max(),t_us_comment.min())

d= 10000
bin_nums = (t_us_comment.max()-t_us_comment.min())//d

plt.figure(figsize=(20,8),dpi=80)
plt.hist(t_us_comment,bin_nums)
plt.show()

效果:
ccc-数据科学库(HM)-day3_第5张图片

问题:
  • 数据分布大多集中,有个别值很大影响X轴范围
解决办法:
  • 给予数据限制条件,排除差异较大的数据

更改后的代码:

# coding=utf-8
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"

t_us = np.loadtxt(us_file_path,delimiter=",",dtype="int")

t_us_comment = t_us[:,-1]
t_us_comment = t_us_comment[t_us_comment<=5000]

print(t_us_comment.max(),t_us_comment.min())

d= 250
bin_nums = (t_us_comment.max()-t_us_comment.min())//d

plt.figure(figsize=(20,8),dpi=80)
plt.hist(t_us_comment,bin_nums)
plt.show()

效果:
ccc-数据科学库(HM)-day3_第6张图片

要点:
  • 利用数据分割让化简数据

项目五:制散点图展现视频中评论数和喜欢数的关系

代码:

# coding=utf-8
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"

t_uk = np.loadtxt(uk_file_path,delimiter=",",dtype="int")
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.show()

效果图:
ccc-数据科学库(HM)-day3_第7张图片

要点:
  • 对于多个信息,划分他们的父数据使它们一致

总结:

1.numpy基本操作脑图

ccc-数据科学库(HM)-day3_第8张图片

2.numpy中常用统计函数

  1. 求和:t.sum(axis=None)
  2. 均值:t.mean(a,axis=None) 受离群点的影响较大
  3. 中值:np.median(t,axis=None)
  4. 最大值:t.max(axis=None)
  5. 最小值:t.min(axis=None)
  6. 极值:np.ptp(t,axis=None) 即最大值和最小值只差
  7. 标准差:t.std(axis=None)
    在这里插入图片描述

3.初始数据的生成

  1. 创建一个全0的数组: np.zeros((3,4))
  2. 创建一个全1的数组:np.ones((3,4))
  3. 创建一个对角线为1的正方形数组(方阵):np.eye(3)

4.numpy随机数的生成

ccc-数据科学库(HM)-day3_第9张图片

你可能感兴趣的:(数据科学库(HM),numpy,python,机器学习)