数据分析-numpy

numpy数组创建

import numpy as np
import random

#使用numpy生成数组,得到ndarray的类型
t1 = np.array([1,2,3,])
print(t1)
print(type(t1))

t2 = np.array(range(10))
print(t2)
print(type(t2))

t3 = np.arange(4,10,2)
print(t3)
print(type(t3))

print(t3.dtype)
print("*"*100)

#numpy中的数据类型
t4 = np.array(range(1,4),dtype="i1")
print(t4)
print(t4.dtype)

##numpy中的bool类型
t5 = np.array([1,1,0,1,0,0],dtype=bool)
print(t5)
print(t5.dtype)

#调整数据类型
t6 = t5.astype("int8")
print(t6)
print(t6.dtype)

#numpy中的小数
t7 = np.array([random.random() for i in range(10)])
print(t7)
print(t7.dtype)

t8 = np.round(t7,2)
print(t8)

numpy数组的计算

import numpy as np 
t1 = np.arange(12)
print(t1)
print(t1.shape)


t2 = np.array([[1,2,3],[4,5,6]])
print(t2)
print(t2.shape)

t3 = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
print(t3)
print(t3.shape)

print("*"*50)

t4 = np.arange(12)
print(t4)
print(t4.reshape((3,4)))

print("*"*50)

t5 = np.arange(24)
print(t5.reshape((2,3,4)))
print(t5.reshape((4,6)))
#transfer to one-dimentional
print(t5.flatten())



print("*"*50)
#(3,3,2)和(3,2)是可以计算的
a = np.arange(18)
a = a.reshape((3,3,2))
b = np.arange(6)
b = b.reshape((3,2))
print(a)
print(b)
print(a+b)


numpy读取本地数据和索引

参数含义
frame文件,字符串或产生器,可以是.gz或bz2压缩文件
dtype数据类型,可选,CSV的字符串以什么数据类型读入数组中,默认np.float
delimiter分隔字符串,默认是任何空格,改为逗号
skiprows跳过前x行,一般跳过第一行表头
usecols读取指定的列,索引,元组类型
unpack如果True,读入属性将分别写入不同数组变量,False读入数据只写入一个数组变量,默认False
import numpy as np 

file_path = "./gb_videos_data_numbers.csv"

t1 = np.loadtxt(file_path, delimiter = ",",dtype = "int")

print(t1)

#unpack设置为True, 相当于转置
#等同于t.transpose(), t.swapaxes(1,0), t.T这三个办法


numpy中的索引和切片

import numpy as np
t = np.arange(24).reshape((4,6))
print(t)
#取行
print(t[2])

#取连续的多行
print(t[1:])
#取不连续的多行
print(t[[0,2,3]])
print(t[[0,2],:])
#取列
print(t[:,0])
#取连续的多列
print(t[:,1:])
#取不连续的多列
print(t[:,[0,2]])
#取第2行到第3行,第3列到第5列
print(t[1:3,2:5])
#取多个不相邻的点
#(0,0),(2,1),(2,3)
print(t[[0,2,2],[0,1,3]])



numpy中更多的索引方式

import numpy as np
t = np.arange(24).reshape((4,6))
print(t)
#三元运算符,小于等于10变0,其余为100
print(np.where(t<=10,0,100))
#clip(),小于3的变3,大于8的变8
print(t.clip(3,8))

numpy中的nan和常用统计方法

  1. nan和inf的type是float
  2. 两个nan是不相等的
  3. 利用2的特性判断nan的个数可以用np.count_nonzero(t!=t)
  4. nan和任何东西计算都是nan
命令解释
axis = 0, axis = 10代表计算列,1代表计算行
sum()求和
mean()均值
median()中值
max()最大值
min()最小值
ptp()最大值与最小值之差
std()标准差

numpy中填充nan和video数据的练习

import numpy as np 

def fill_ndarra(t1):
	#shape[1] = 4 in this case
	for i  in range (t1.shape[1]):
		temp_col = t1[:,i]
		nan_num = np.count_nonzero(temp_col!=temp_col)
		#不为0,说明当前这一列中有nan
		if nan_num != 0:
			temp_not_nan_col = temp_col[temp_col == temp_col]
			#把nan变为均值
			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_ndarra(t1)
	print(t1)

了解视频评论数和喜欢的关系

import numpy as np
from matplotlib import pyplot as plt
file_path = "./gb_videos_data_numbers.csv"

t1 = np.loadtxt(file_path, delimiter = ",",dtype = "int")

t1 = t1[t1[:,1]<=500000]

t1_comment = t1[:,-1]
t1_like = t1[:,1]


plt.figure(figsize = (20,8),dpi = 80)
plt.scatter(t1_like,t1_comment)

plt.show()

在这里插入图片描述


数据的拼接

命令解释
np.vstack()竖直拼接
np.hstack()水平拼接
import numpy as np 
t1 = np.arange(12).reshape((2,6))
t2 = np.arange(12,24).reshape((2,6))
print(t1)
print("*"*50)
print(t2)
print("*"*50)
print(np.vstack((t1,t2)))
print(np.hstack((t1,t2)))

#列交换
t1[:,[0,2]] = t1[:,[2,0]]
print(t1)

numpy中更多方法

命令解释
np.argmax(t,axis = 0)获取最大值最小值位置
np.argmax(t,axis = 1)获取最小值位置
np.zeros((3,4))创造一个全0的数组
np.ones((3,4))创造一个全1的数组
np.eye(3)创造一个对角线为1的 3 x 3正方形数组
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值