Python数据分析第一周总结

本文总结了Python数据分析第一周的学习内容,包括数据分析概念、Notebook介绍、Numpy的基本操作如统计信息,以及Pandas的初步应用。介绍了如何安装Jupyter、数据处理的基本流程、常用魔法指令,以及Numpy的均值、中位数、方差等统计量的计算。此外,还提及了Pandas的Series和DataFrame对象的创建及数据读取。
摘要由CSDN通过智能技术生成

Python数据分析第一周总结

一、数据分析的介绍

1.什么是指标?

指标:能够反映业务特征的统计数据就是指标。

Database —> DB —> OLTP (Online Transation Procession) —> 业务库

Logging日志文件—>Flume/Logstash

开发数据集 —> CSV/Excel/Open API —> JSON —>Sqoop

ETL —> Extract Transform Load

Data warehouse —>DW —> OLAP(Online Analysis Processing) —> 分析库

​ —> Hadoop (HDFS + MapReduce/Spark) —>Hive —>HQL

2.数据分析的工作内容

1.确定目标(输入)

2.获取数据

3.清洗数据

4.数据透视

5.数据报告(输出)

6.分析洞察(后续)
在这里插入图片描述

3.工具准备

Jupyter —> Julia / Python / R

​ — Notebook

​ — JupyterLab

Anaconda —>Python 3.9 + 200个三方库(小白)

Miniconda —> Python 3.9 + 若干个必要的库

方案一:

打开电脑终端

输入命令pip install jupyter 下载jupyter

输入命令jupyter notebook,启动jupyter notebook

如果jupyter notebook无法执行代码,输入命令pip install pyzmp==20.0.0

方案二:

下载jupyterlab输入命令pip install jupyterlab

更新jupyterlab输入命令pip install -U jupyterlab

运行jupyterlab输入命令jupyter lab

4.常用魔法指令

%pwd显示文件路径

%ls看到该路径下所有文件

%lsmagic看所有的魔法指令

%load导入该路径下的某个python文件

二、认识Notebook

for _ in range(10):
    print('hello ,world')
# 查看函数的用法
? range
# 显示文件的路径
%pwd
# 显示当前文件
%ls
# 查看所有的魔法指令
%lsmagic

热身练习

用随机的方式产生5个学生(姓名自拟)3门课程(语文、数学、英语)的成绩

1.统计每个学生的平均分。

2.统计每门课程的最高分和最低分。

3.统计每门课程成绩的(样本)方差。

def average(scores: list):
    return sum(scores) / len(scores)

def variance(scores: list):
    mean_value = average(scores)
    return sum([(score-mean_value)**2 for score in scores]) / (len(scores)-1)
import random

names = ('Sam', 'Mary', 'Bob', 'Alex', 'Alice')
courses = ('语文', '数学', '英语')
scores = [[random.randrange(0, 101) for x in range(3)] for y in range(5)]
scores
for i, name in enumerate(names):
    print(f'{name}平均分:{average(scores[i]):.1f}')
for i, course in enumerate(courses):
    temp_scores = [scores[j][i] for j in range(5)]
    print(f'{course}的最高分:{max(temp_scores)}')
    print(f'{course}的最低分:{min(temp_scores)}')
    print(f'{course}成绩的方差:{variance(temp_scores)}')

notebook上下载某个库

! pip install…

!pip install -U…

# 查看库的版本
np.__version__
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = 'STZhongsong'
plt.rcParams['axes.unicode_minus'] = False
import random

names = ('Sam', 'Mary', 'Bob', 'Alex', 'Alice')
courses = ('语文', '数学', '英语')
scores = [[random.randrange(0, 101) for x in range(3)] for y in range(5)]
# array数组
scores = np.array(scores)
scores
type(scores) # numpy.ndarray
# 计算每个学生的平均分(沿着1轴求平均)
np.round(scores.mean(axis=1),1)
# 统计每门课的最高分(沿着0轴找最大)
scores.max(axis=0)
# 统计每门课的最低分(沿着0轴找最小)
scores.min(axis=0)
# 统计每门课的方差(沿着0轴求方差)
scores.var(axis=0)
# 创建DataFrame对象
df = pd.DataFrame(data=scores, colums=courses, index=names)
df
# 增加一个列(平均分)
df['平均分'] = np.round(df.mean(axis=1), 1)
df
%config InlineBackend.figure_format = 'svg'
# 生成柱状图
df.plot(kind='bar', y=['语文', '数学', '英语'])
plt.xticks(rotation=0)
plt.show()
# 增加一个行(方差)
df.loc['方差'] = df.var(axis=0)
df
# 写入excel
df.to_excel('学生成绩.xlsx')

三、Numpy的应用

# 通过array函数将List转换成ndarray
array1 = np.array([1, 2, 3, 4, 5], dtype='i8')
array1
type(array1)  # numpy.ndarray
# 元素个数
array1.size
# 维度
array1.ndim
# 形状
array1.shape
# 每个元素占用的内存空间(字节) 1个元素8个字节
array1.itemsize
# 元素的数据类型
array1.dtype
# 整个数组占用的内存空间(字节)
array1.nbytes
# 通过arange函数指定取值范围创建ndarray
array2 = np.arrange(1, 100, 2)
array2
# 通过linspace构造等差数列创建ndarray
array3 = np.linspace(-5, 5, 101)
%timeit list(range(1000000))
%timeit np.arange(1000000)
# 通过随机的方式创建ndarray对象
array4 = np.random.randint(60, 101, 15)
array4
# 创建10个0~1的小数
array5 = np.random.random(10)
array5
# 创建二维数组
array6 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array6
array6[1][1] # 5
array6[2, 1] # 8
# 花式索引
array6[[0, 1, 1, 2], [2, 0, 2, 1]]   # array([3, 4, 6, 8])
# 布尔索引
array6[array6 > 5]   # array([6, 7, 8, 9])
array6[(array6 > 5) & (array6 % 2 == 0)]   # array([6, 8])
array6.ndim # 2
array6.shape # (3, 3)
# 用随机的方式创建二维数组
array7 = np.random.randint(60, 101, (5, 3))
array7
array8 = np.zeros((4, 5), dtype='i8')
array8
np.ones((2, 5), dtype='u8')
np.full((10, 10), 'ad')
array9 = np.eye(10)
array9
# 将一维数组调形成二维数组
array10 = array4.reshape((5,3))
array10
# 将二维数组调形成一维数组
array11 = array10.flatten()
array11
# 将数组变成列表
array11.tolist()

数组的索引和切片

array11[0] = 100
array11[[1, 3, 9]]
# 花式索引
array11[[1, 3, 9, -1, -1, 0, 0, 0]]
# 数组的关系运算会产生布尔数组
array11 >= 80
# 布尔索引
array11[array11 >= 80]
array11[(array11 % 2 != 0) & (array11 >= 80)]
array11[(array11 % 2 != 0) | (array11 >= 80)]
# 切片操作
array11[3:8]
array11[3:8:2]
array11[::-1]
array12=np.array([[0, 1, 2, 3], [2, 3, 4, 5], [4, 5, 6, 7],[6, 7, 8, 9]])
array12
array12[0:2, 0:2]
array12[1:3, 1:3]
array12[2:, 2:]
array12[0::3, 0::3]
array13 = plt.imread('背景图.png')
array13
array13.ndim # 3
# 显示图片
plt.imshow(array13)
# 水平翻转
plt.imshow(array13[:, ::-1])
# 垂直翻转
plt.imshow(array13[::-1, :])
# 抠图
plt.imshow(array13[0:600, 1250::])
# 让图变模糊
plt.imshow(array13[::5,::5])
# 改颜色
plt.imshow(array13[::5, ::5, ::-1])
获取描述性统计信息
  1. 均值(mean):均值代表某个数据集的整体水平,我们经常提到的客单价、平均访问时长、平均配送时长等指标都是均值。均值的缺点是容易受极值的影响,虽然可以使用加权平均值来消除极值的影响,但是可能事先并不清楚数据的权重;对于正数可以用几何平均值来替代算术平均值。

    算术平均值:

x ˉ = 1 N ∑ i = 1 N x i \bar{x} = \frac {1} {N} \sum_{i=1}^{N}x_{i} xˉ=N1i=1</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值