python数据分析期末复习

一、NumPy数据计算

1、numpy数组 

NumPy提供了一个多维数组类型ndarray,它可以用来表示向量、矩阵和张量。这些数组可以有不同的数据类型,如整数、浮点数、复数等。
具有如下属性:
(1)内存最优(除了其他方面,以内存块的最佳布局传送数据到C或FORTRAN)。

(2)允许快速线性代数计算,不需要使用for循环迭代就能进行逐元素的操作。

(3)它是SciPy和Scikit-learn等重要库的数据结构,作为它们函数的输入。

NumPy数组通常比Python的内建列表更快,因为它们底层是由C语言编写的,并且专门针对数组的操作进行了优化。

2、重要性

  1. 高性能的数值计算
    • NumPy使用C语言编写,底层进行了大量的优化,因此执行速度非常快。
    • 它提供了多维数组对象(ndarray),这些对象在内存中是连续存储的,因此可以大大减少CPU的缓存未命中,从而提高计算效率。
  2. 数组操作方便
    • NumPy提供了大量的函数和方法,用于对数组进行各种操作,如切片、索引、排序、统计、线性代数运算等。
    • 这些操作通常都是元素级别的,可以同时对数组中的所有元素进行操作,而无需使用循环,从而大大提高了效率。
  3. 广播机制
    • NumPy的广播机制允许在不同大小的数组之间进行算术操作,而无需显式地复制或扩展这些数组。
    • 这使得在处理不同维度的数据时非常方便,减少了编程的复杂性。
  4. 内存效率
    • NumPy的数组在内存中是连续存储的,因此可以更有效地利用内存空间。
    • 与Python的内置列表相比,NumPy数组使用的内存更少,因为它们不存储任何额外的对象信息(如对象的类型、引用计数等)。
  5. 与其他库的兼容性
    • NumPy是许多其他Python科学计算库的基础,如Pandas、SciPy、Matplotlib等。
    • 这些库都依赖于NumPy的数组对象来存储和处理数据,因此熟悉NumPy对于使用这些库来说是非常有帮助的。
  6. 科学计算的支持
    • NumPy提供了大量的科学计算函数,如线性代数、随机数生成、傅里叶变换等。
    • 这些函数为数据分析提供了强大的支持,使得用户能够轻松地进行各种复杂的计算。
  7. 易于扩展
    • NumPy本身是一个开源项目,其源代码是公开的,用户可以根据自己的需求进行扩展。
    • 此外,NumPy还提供了许多用于创建自定义数组子类的工具,使得用户能够更灵活地处理数据。

3、数组创建

1.利用array函数生成数组

        基本使用格式如下:
        numpy.array( object,  dtype, copy, order, subok, ndmid)

  • object: 传入要转换为数组的数据。
  • dtype:数组元素的数据类型。
  • copy: (可选, 默认为 True)
  • order: (可选, 默认为 'K')。
  • subok:(可选, 默认为 False)。
  • ndmid(可选):生成数组的最小维度。

2.利用NumPy函数生成数组

(1)arange函数:arange([start] stop, [stpe,] dtype=None)

(2)linspace函数:linspace(start, stop, num, endpoint=True, retstep=False, dtype=None)

(3)logspace函数:创建等比数列

(4)其他函数:zeros, eye, diag, ones等
        zeros(shap,dtype=float)   创建全为0的数组
        eye(N, M=None, k=0, dtype=float)    创建对角线为1,其余为0的数组
        ones(shape, dtype=None, order='c')    创建全为1的数组
        full(shape, fill_value, dtype=None, order='c')

4、生成随机数组

        1.np.random.random()方法用于创建一个元素值为0~1的随机数数组,接收一个列表或者元组作为参数。

        2.rand函数可以生成服从均匀分布的随机数。

        3.randn函数可以生成服从正态分布的随机数。

        4.randint 函数可以生成有上下限范围的随机数,其格式如下:
           numpy. random. randint(low, high=None, size=None, dtype='1')

二、pandas数据处理

1、什么是pandas

pandas 是基于 NumPy 的一种高性能、易用的数据结构和数据分析工具,该工具是为了解决数据分析任务而创建的。pandas纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具和大量快速便捷地处理数据的函数与方法。

pandas是Python的一个数据分析包,最初由AQR Capital Management于2008 年 4月开发,并于2009年底开源面市,由专注于Python数据包开发的PyData 开发团队继续开发和维护,属于 PyData项目的一部分。
pandas最初被作为金融数据分析工具而开发出来,因此,pandas为时间序列分析提供了很好的支持。pandas 的名称来自面板数据(panel data)和 Python 数据分析(data analysis)。 panel data是经济学中关于多维据集的一个术语,在pandas中也提供了panel 的数据类型。

2、pandas的主要功能

1.数据导入和导出:Pandas可以轻松地导入和导出数据,支持多种格式,如CSV、Excel、SQL数据库和HDF5格式。

2.数据清洗和准备:Pandas提供了缺失数据处理、数据重复值检测、异常值处理等功能,以便于进行数据清洗。同时,它还支持数据类型转换和数据集的合并、重塑和旋转。

3.数据分析:Pandas提供了丰富的数据分析工具,可以进行数据描述统计、相关性分析、分组和聚合等操作。

4.数据可视化:Pandas内置了与Matplotlib和Seaborn等绘图库的接口,可以方便地绘制数据的图表,如线图、柱状图、饼图等。

3、Series和DataFrame

Series:一维标签数组,能够保存任何数据类型(整数、字符串、浮点数、Python对象等)。Series中的轴标签被统称为索引。它是Pandas中许多操作的基础构建块。
它由两个相互关联的数组组成,其中主数组用来存放数据,主数组的每个元素都有一个与之关联的标签,这些标签存储在另外一个称为index的数组中。

Series([数据1,数据2,…],index[索引 1,索引2,…])

DataFrame:二维标签数据结构,可以看作是一个表格,包含列(可以是不同的数据类型)。DataFrame有行索引和列索引,可以被看作是一个Series的容器。

三、题目

1、Python中的模块和包 

 在Python中,模块(module)是一个包含Python定义和语句的文件。模块可以定义函数、类和变量,也可以包含可执行的代码。包(package)是一种组织Python模块的方式,它是一个包含多个模块的目录。包中的模块通常被组织成层次化的结构,以便于管理和使用。

导入模块例子:

        导入模块:import math_utils

        导入包中的模块:from utils import math_utils

   utils为包,其中包含一个名为math_utils.py的模块

2、属于NumPy提供的基本对象是array。

3、改变数组的操作有:切片,索引,转置,堆叠。

4、字典对象的.clear()方法可以一次性清空字典中所有条目。

5、已知x= list(range(20)),那么语句print(x[100:200])的输出结果为: 空列表[ ]。

6、Python标准库math中用来计算平方根的函数是math.sqrt()。

7、什么是 pandas?Pandas的主要功能是什么?解释Series和DataFrame

        答:在 二、pandas数据处理

四、绘制散点图

        散点图,是以一个特征为横坐标,以另一个特征为纵坐标,利用坐标点的分布形态反映特征间的统计关系的一种图形。

        散点图可以提供以下两类关键信息。
        (1)特征之间是否存在数值或数量的关联趋势,关联趋势是线性的还是非线性的
        (2)如果某一个点或某几个点偏离大多数点,则这些点是离群值。

        散点图通过散点的疏密程度变化趋势表示两个特征的数量关系。如果有三个特征,若其中一个特征为类别型,散点图改变不同特征的点的形状颜色,即可了解两个数值型特征和这个类别型特征之间的关系。

        pyplot中绘制散点图的函数为scatter(), 其使用方法如下。
        pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, hold=None, data=None, **kwarges)
        scatter()函数常用参数及其说明:

  • x,y: 接收array,表示x轴和y轴对应的数据。无默认。
  • s: 接收数值或一维array,指定点的大小。若传人一维array,则表示每个点的大小。默认为None。
  • c: 接收数值或一维array,指定点的颜色。若传入一维 array,则表示每个点的颜色。默认为None。
  • marker: 接收特定string,表示绘制的点的类型。默认为None。
  • alpha: 接收0~1的小数,表示点的透明度。默认为None。

代码例子: 

import matplotlib.pyplot as plt
import numpy as np
import matplorlib
x = np.arange(0.0, 50.0, 0.5)
y = x ** 1.3 + np.random.rand( *x.shape) * 30.0
plt.scatter(x, y, c = 'r', marker = '.')
plt.xlable("x")
plt.ylable("y")
plt.show()

 五、数据合并

1.堆叠合并数据

        堆叠就是简单地把两个表拼在一起,也被称为轴向连接、绑定或连接。按照连接轴的方向,数据堆叠可分为横向堆叠纵向堆叠
        1)横向堆叠
        横向堆叠可以使用concat()函数完成,concat()函数的基本语法如下。
        concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False)

        当axis=1时,concat做行对齐,然后将不同列名称的两张或多张表合并。当两个表索引不完全相同时,可以使用join 参数选择是内连接(inner)还是外连接(outer)。在内连接的情况下,仅仅返回索引重叠部分;在外连接的情况下,则显示索引的并集部分数据,不足的地方使用空值填补。

        2)纵向堆叠
        对比横向堆叠,纵向堆叠是将两个数据表在y轴向上拼接。concat()函数和append()函数都可以实现纵向堆叠。
        使用concat()函数时,在默认情况下,即axis=0时,concat做列对齐,将不同行索引的两张或多张表纵向合并。在两张表的列名并不完全相同的情况下,可以使用join参数:取值为inner时,返回的仅仅是列名的交集所代表的列;取值为outer时,返回的是两列名的并集代表的列。

2.主键合并数据

        主键合并即通过一个或多个键将两个数据集的行连接起来,类似于SQL 中的join。针对两张包含不同字段的表,将其根据某几个字段一一对应拼接起来,结果集的列数为两个原数据的列数和减去连接键的数量。pandas中的merge()函数和join()函数都可以实现主键合并,但两者的实现方式并不相同。
        merge()函数的具体用法如下。
        merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True, suffixes=('_x',  '_y'),copy=True, indicator=False, validate=None)

        和数据库的join一样,merge()函数也有左连接(left)、右连接(right)、内连接(inner)和外连接(outer)。但相比数据库SQL中的join,merge()函数还有其自身独到之处,如可以在合并过程中对数据集中的数据进行排序等。根据merge()函数中的参数说明,并按照需求修改相关参数,即可用多种方法实现主键合并。

        join()函数也可以实现部分主键合并的功能。但是使用join()函数时,两个主键的名字必须相同,其具体用法如下。
        join(self, other, on=None, how='left', lsuffix=",rsuffix=' ',sort = False) 

六、unstack()函数

        unstack()方法是用于DataFrame的透视或展开操作,通常用于将宽格式(宽格式是指每行是一个观测,每列是一个变量)的数据转换为长格式(长格式是指每行是一个变量,每列是观测)。

代码实现:

import pandas as pd

# 创建一个示例DataFrame
df = pd.DataFrame({
    'Date': ['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04'],
    'Variable': ['A', 'B', 'A', 'B'],
    'Value': [10, 20, 30, 40]
})

# 将'Variable'列展开
unstacked_df = df.unstack(level='Variable')

# 将unstacked_df保存到CSV文件
unstacked_df.to_csv('unstacked_df.csv')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值