当前位置:   article > 正文

数据分析笔记(numpy)_delimiter=',',unpack=true是什么意思

delimiter=',',unpack=true是什么意思

1.为什么要学习numpy

快速,方便,科学计算的基础库

2.什么是numpy

重在数值计算,也是大部分python科学计算库的基础库,多用在大型,多维数组上执行数值运算

如何通过numpy创建数组

普通法,range法,np.arange法

  1. #使用numpy生成数组
  2. t1 = np.array([1,2,3])
  3. print(t1)
  4. print(type(t1))
  5. t2 = np.array(range(10))
  6. print(t2)
  7. t3 = np.arange(4,10,2)#(起点,终点,步长)
  8. print(t3)
  9. print(t3.dtype)#输出t3的数据类型

指定数据类型

  1. t4 = np.array(range(1,4),dtype=float)#指定数据类型
  2. print(t4)
  3. print(t4.dtype)
  4. t5 = np.array([1,1,0,0,1],dtype=bool)
  5. print(t5)
  6. print(t5.dtype)

调整数据类型

  1. t6 = t5.astype('int8')
  2. print(t6)
  3. print(t6.dtype)

 生成随机小数并保留指定的位数

  1. t7 = np.array([random.random() for i in range(10)])
  2. print(t7)
  3. print(t7.dtype)
  4. t8 = np.round(t7,2)#保留两位小数
  5. print(t8)

 查看数组形状

print(t3.shape)

改变数组形状

reshape方法为原地修改,没有返回值 

注意改变为一维数组时所传的参数

 将多维数组展开为一维数组

 ##数组的计算

数组与数进行计算

###数组与数组进行计算

对应位置加减乘数

 在同一维度下进行运算

广播原则:如果两个数组的后缘维度(即从末尾开始算起的维度)的轴长度相符或者其中一方的长度为1,则认为他们的广播是兼容的。广播会在缺失和(或)长度为1的维度上进行。(某一维度上形状一样)

数组的轴:

 np.arange(0,10).reshape(2,5)中,2表示0轴的长度为2,1轴的长度为5,2乘以5总共10个数据

 # numpy读取本地数据

 

  1. us_file_path = './youtube_video_data/US_video_data_numbers.csv'
  2. uk_file_path = './youtube_video_data/GB_video_data_numbers.csv'
  3. t1 = np.loadtxt(us_file_path, delimiter=',', dtype='int', unpack=True)#delimiter为分隔符,unpack为旋转转置数据

unpack通俗的讲就是转置。

numpy中转置的三种方法

 numpy中的索引和切片

#取行

# print(t2[2])

# #取连续的多行

# print(t2[2:])

# #取不连续的多行

# print(t2[[2,8,10]])

# #取列

print(t2[:,0])#行不做要求,取第一列

print(t2[:,2:])#取连续多列,从第三列开始取

print(t2[:,[0,2]])#取不连续的列

#取多行多列,取第三行到第五行,第二列到第四列的结果

b = t2[2:5,1:4]

print(b)

#取多个不相邻的点

c = t2[[0,2],[0,1]]#选出的结果为(0,0)和(2,1)位置的点

print(c)

 #numpy中的数值修改

  1. #将数组中小于10的数字替换为3
  2. t[t < 3] = 3

#numpy中的三元运算符

np.where(t2<=3,100,300)#将小于等于3的替换为100,否则替换为300

 #numpy中的clip(裁剪)

t.clip(10,18)#将t中小于10的替换成10,大于18的替换成18

 #nan为浮点类型,所以要替换需要先将类型转化为浮点类型

np.astype(float)

 NAN----------not a number,当读取本地文件为float的时候,如果有缺失,就会出现nan,或者当出现不合适的计算时会出现NAN

inf-------表示正无穷

-inf--------表示负无穷

numpy中NAN的注意点:

1.两个nan是不相等的

2.执行以下,结果为True

np.nan != np.nan

 3.利用以上特性,判断数组中nan的个数

4. 

 5. nan和任何值计算,结果都为nan

在一组数据中不可以把NaN单纯替换为0,更一般的方式是将数值替换为均值(中值),或者直接删除有缺失值的一行。

#numpy中常用的统计函数

实战1:找出数组中的nan并且替换它

  1. import numpy as np
  2. def fill_ndarray(t1):
  3. for i in range(t1.shape[1]):#遍历每一列
  4. temp_col = t1[:,i]#当前的一列
  5. nan_num = np.count_nonzero(temp_col != temp_col)
  6. if nan_num != 0:#不为0,说明这一列有nan
  7. temp_not_nan_col = temp_col[temp_col == temp_col]#当前一列不为nan的array
  8. temp_col[np.isnan(temp_col)] = temp_not_nan_col.mean()#选中当前为nan的位置,把值赋值为不为nan的均值
  9. return t1
  10. if __name__ == '__main__':
  11. t1 = np.arange(12).reshape(3,4).astype('float')
  12. t1[1,2:] = np.nan
  13. print(t1)
  14. t1 = fill_ndarray(t1)
  15. print(t1)

实战2:绘制美国youtube1000评论数量的直方图

  1. import numpy as np
  2. from matplotlib import pyplot as plt
  3. us_file_path = './youtube_video_data/US_video_data_numbers.csv'
  4. uk_file_path = './youtube_video_data/GB_video_data_numbers.csv'
  5. t_us = np.loadtxt(us_file_path, delimiter=',', dtype='int')
  6. t_us_comments = t_us[:,-1]
  7. #选择比5000小的数据
  8. t_us_comments = t_us_comments[t_us_comments <= 5000]
  9. print(t_us_comments.max(),t_us_comments.min())
  10. d = 250
  11. bin_nums = (t_us_comments.max()-t_us_comments.min()) // d
  12. plt.figure(figsize=(20,8),dpi=80)
  13. plt.hist(t_us_comments,bin_nums)
  14. plt.show()

 实战3:了解英国youtube中视频的评论数与喜欢数的关系

  1. import numpy as np
  2. from matplotlib import pyplot as plt
  3. uk_file_path = './youtube_video_data/GB_video_data_numbers.csv'
  4. t_uk = np.loadtxt(uk_file_path, delimiter=',', dtype='int')
  5. t_uk = t_uk[t_uk[:,1] <= 500000]
  6. t_uk_comment = t_uk[:,-1]
  7. t_uk_like = t_uk[:,1]
  8. plt.figure(figsize=(20,8),dpi=80)
  9. plt.scatter(t_uk_comment,t_uk_like)
  10. plt.show()

数组的拼接

  1. np.vstack((t1,t2))#竖直拼接
  2. np.hstack((t1,t2))#水平拼接
  3. #竖直分割
  4. #水平分割

数组的行列交换

  1. t[[1,2],:] = t[[2,1],:]#行交换
  2. t[:,[0,2]] = t[:,[2,0]]#列交换

实战:将英国和美国的数据进行拼接

  1. from typing_extensions import final
  2. import numpy as np
  3. from matplotlib import pyplot as plt
  4. us_file_path = './youtube_video_data/US_video_data_numbers.csv'
  5. uk_file_path = './youtube_video_data/GB_video_data_numbers.csv'
  6. uk_data = np.loadtxt(uk_file_path, delimiter=',', dtype='int')
  7. us_data = np.loadtxt(us_file_path, delimiter=',', dtype='int')
  8. #构造全部为0的数据
  9. zeros_data = np.zeros((us_data.shape[0],1)).astype('int')
  10. ones_data = np.zeros((uk_data.shape[0],1)).astype('int')
  11. us_data = np.hstack((us_data, zeros_data))
  12. uk_data = np.hstack((uk_data,ones_data))
  13. final_data = np.vstack((us_data,uk_data))
  14. print(final_data)

此外: 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/142373
推荐阅读
相关标签
  

闽ICP备14008679号