数据分析基础
数组的概念
数据处理的一般流程
数据收集-数据预处理-数据处理-数据展示
数据收集的方法
- 网络爬虫
- 公开数据集
- 其它途径收集的数据
数据预处理方法
4. 归一化
5. 二值化
6. 维度变换
7. 去重
8. 无效数据过滤
数据处理方法
9. 数据排序
10. 数据查找
11. 数据统计分析
数据展示方法
- 列表
- 图表
- 动态交互图形
安装Numpy
pip install numpy
新建一个Python文件
import numpy as np # 导入numpy模块
导入Numpy模块
as np表示在接下来的程序里用np表示numpy
import 某某模块 as 一个缩写
Numpy的基础类型——ndarray
创建一个ndarray类型的数组
data = np.array([1,2,3,4,5]) # 创建一个ndarray类型的数组
np.array()里直接填一个由数字组成的列表
python_list = [1,2,3,4,5] # 把列表存成变量
data = np.array(python_list) # 创建一个ndarray类型的数组
创建一个二维的ndarray类型的数组
data = np.array([[1,2,3],[4,5,6]]) # 创建一个二维的ndarray类型的数组
data = np.array(
[
[1,2,3],
[4,5,6]
]) # 创建一个二维的ndarray类型的数组
判断ndarray的维度
import numpy as np # 导入numpy模块
data = np.array([[1,2,3],[4,5,6]]) # 创建一个二维的ndarray类型的数组
print(data.ndim) # 判断ndarray的维度
了解ndarray各维度的长度
import numpy as np # 导入numpy模块
data = np.array([[1,2,3],[4,5,6]]) # 创建一个二维的ndarray类型的数组
print(data.shape) # 了解ndarray各维度的长度
创建一个全是0的数组
import numpy as np # 导入numpy模块
data = np.zeros(10) # 创建一个全是0的数组
print(data) # 输出数组
创建一个全是1的二维数组
import numpy as np # 导入numpy模块
data = np.ones((3,10)) # 注意多维数组的各维度长度要用元组来表示
print(data) # 输出数组
注意多维数组的各维度长度要用 元组来表示
import numpy as np # 导入numpy模块
data = np.arange(10) # 创建一个ndarray类型的数组
print(data[5]) # 获取数组中某个数字(行话:索引)
获取数组中某个数字(行话:索引)
获取二维数组中某个数字(行话:索引)
import numpy as np # 导入numpy模块
data = np.array([[1,2,3],[4,5,6]]) # 创建一个二维的ndarray类型的数组
print(data[0][1]) # 获取二维数组中某个数字(行话:索引)
print(data[0,1]) # 获取二维数组中某个数字(行话:索引)
获取数组中某几个数字(行话:切片)
import numpy as np # 导入numpy模块
data = np.arange(10) # 创建一个ndarray类型的数组
print(data[3:6]) # 获取数组中某几个数字(行话:切片)
注意!切片得到的数据对应的还是原始数据
任何修改都会反映到原始数据上
import numpy as np # 导入numpy模块
data = np.arange(10) # 创建一个ndarray类型的数组
data_slice = data[3:6] # 把切片数据赋予变量
data_slice[2] = 100 # 修改切片数据
print(data) # !切片得到的数据对应的还是原始数据 任何修改都会反映到原始数据上
输出结果:
[ 0 1 2 3 4 100 6 7 8 9]
想要一份副本不影响原始数据?
请用data[3:6].copy()
变换数组的维度
import numpy as np # 导入numpy模块
data = np.arange(10) # 创建一个ndarray类型的数组
print(data) # 输出数组
print(data.reshape((2,5))) # 变换数组的维度
输出结果:
[0 1 2 3 4 5 6 7 8 9]
[[0 1 2 3 4]
[5 6 7 8 9]]
矩阵的转置
import numpy as np # 导入numpy模块
data = np.arange(10) # 创建一个ndarray类型的数组
print(data.reshape((2,5)).T) # 变换数组的维度,矩阵的转置
ndarray的运算
对ndarray数组每个元素都求平方根
import numpy as np # 导入numpy模块
data = np.arange(10) # 创建一个ndarray类型的数组
print(np.sqrt(data)) # 对ndarray数组每个元素都求平方根
将两个数组相加
import numpy as np # 导入numpy模块
data1 = np.array([1,2,3,4,5]) # 创建一个ndarray类型的数组
data2 = np.array([6,7,8,9,10]) # 创建另一个ndarray类型的数组
print(data1 + data2) # 将两个数组相加
输出结果:
[ 7 9 11 13 15]
将两个数组相加
import numpy as np # 导入numpy模块
data1 = np.array([1,2,3,4,5]) # 创建一个ndarray类型的数组
data2 = np.array([6,7,8,9,10]) # 创建另一个ndarray类型的数组
print(np.add(data1,data2)) # 将两个数组相加
数学及统计方法:求和
import numpy as np # 导入numpy模块
data = np.arange(10) # 创建一个ndarray类型的数组
print(data.sum()) # 数学及统计方法:求和
数学及统计方法:求平均值
import numpy as np # 导入numpy模块
data = np.arange(10) # 创建一个ndarray类型的数组
print(data.mean()) # 数学及统计方法:求平均值
数学及统计方法:求标准差
import numpy as np # 导入numpy模块
data = np.arange(10) # 创建一个ndarray类型的数组
print(data.std()) # 数学及统计方法:求标准差
数组的排序
import numpy as np # 导入numpy模块
data = np.array([1,9,5,4,6,3,7,2,8]) # 创建一个ndarray类型的数组
data.sort() # 数组的排序
print(data) # 输出数据
ndarray的存取
读取txt文件
import numpy as np # 导入numpy模块
data = np.genfromtxt('data.txt',delimiter=',') # 读取txt文件
print(data) # 输出数据
数组.astype(要转换成的类型)
import numpy as np # 导入numpy模块
data = np.genfromtxt('data.txt',delimiter=',') # 读取txt文件
print(data.astype(int)) # 转换数据类型
作业描述
读取文件rating.txt中的的数据并分析
• 共有10000本书,以数字id表示
• 每个用户的打分为1~5
• 每一行数据有3个数字,分别表示用户ID, 书本ID,该用户对该书的打分
# -------------------------------------------------------
# 1 输出rating.txt中所有书本各自的平均得分
import numpy as np # 导入numpy模块
data = np.genfromtxt('rating.txt', delimiter=',', dtype='float32') # 读取txt文件
book_data = data.astype(int) # 转换数据类型
# print(book_data)
rating_sum = np.zeros(10000) # 创建数组,存各个书籍的总得分
rating_people_count = np.zeros(10000) # 创建数组,存各个书籍的总评分人数
for rating in book_data[1:]: # 遍历除第一行以外的数据
book_id = rating[1] - 1 # 取出书本ID
rating_sum[book_id] += rating[2] # 计算各个书籍的总得分
rating_people_count[book_id] += 1 # 计算各个书籍的总评分人数
rating_scores = rating_sum/rating_people_count # 计算平均得分
print(f'rating.txt中所有书本各自的平均得分为:{rating_scores}') # 输出rating.txt中所有书本各自的平均得分