考点【大数据分析概述】

木婉清2024/1/4

NumPy

arange()open in new window

  • 使用 arange 函数创建数值范围并返回 ndarray 对象
# 起始值,终止值,步长,数据类型
numpy.arange(start, stop, step, dtype)
import numpy as np
x = np.arange(5)
print(x)
运行结果

[0 1 2 3 4]

import numpy as np
x = np.arange(1, 100, 10, dtype=int)
print(x)
运行结果

[ 1 11 21 31 41 51 61 71 81 91]

reshape()open in new window

  • 不改变数据的条件下修改形状
# 原始数组,新数组的形状,排序风格
numpy.reshape(arr, newshape, order='C')
import numpy as np
# 使用 reshape 调整数组大小
a = np.array([[1, 2, 3], [4, 5, 6]])  # 两行三列
b = a.reshape(3, 2)  # 三行两列
print(b)
运行结果

[[1 2] [3 4] [5 6]]

import numpy as np

a = np.arange(8)
print("原始数组:")
print(a)
print("\n")

b = a.reshape(4, 2)
print("修改后的数组:")
print(b)
运行结果

原始数组: [0 1 2 3 4 5 6 7]

修改后的数组: [[0 1] [2 3] [4 5] [6 7]]

logspace()open in new window

  • 创建一个等比数列
# 起始值,终止值,生成的样本数,对数的底数,数据类型
numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
import numpy as np
# 默认底数为 10
# 该语句的意思是:在10的1次幂到10的2次幂的闭区间中找到10个公比相同的数字
x = np.logspace(1.0, 2.0, num=10)
print(x)
运行结果

[ 10. 12.91549665 16.68100537 21.5443469 27.82559402 35.93813664 46.41588834 59.94842503 77.42636827 100. ]

import numpy as np
# 默认底数为 10
# 语句的意思是:在10的1.0次幂到10的2.0次幂的闭区间中找到10个公比相同的数字
x = np.logspace(1.0, 2.0, num=10)
print(x)
运行结果

[ 10. 12.91549665 16.68100537 21.5443469 27.82559402 35.93813664 46.41588834 59.94842503 77.42636827 100. ]

import numpy as np
# 语句的意思是:在5的1.0次幂到10的2.0次幂的闭区间中找到3个公比相同的数字
x = np.logspace(1.0, 2.0, 3, base=5)
print(x)
运行结果

[ 5. 11.18033989 25. ]

flatten()open in new window

  • 它将多维数组展平为一维数组。
  • 返回一份数组拷贝,对拷贝所做的修改不会影响原始数组
# 排序风格
ndarray.flatten(order='C')
import numpy as np

a = np.arange(8).reshape(2, 4)

print("原数组:")
print(a)
print("\n")
# 默认按行

print("展开的数组:")
print(a.flatten())
print("\n")

print("以 F 风格顺序展开的数组:")
print(a.flatten(order="F"))
运行结果

原数组: [[0 1 2 3] [4 5 6 7]]

展开的数组: [0 1 2 3 4 5 6 7]

以 F 风格顺序展开的数组: [0 4 1 5 2 6 3 7]

swapaxes()open in new window

  • 对换数组的两个轴
# 原数组,轴1,轴2
numpy.swapaxes(arr, axis1, axis2)
import numpy as np
a = np.arange(8).reshape(2, 2, 2)
print("原数组:")
print(a)
print("\n")
print("调用 swapaxes 函数后的数组:")
# 交换轴2和轴0
print(np.swapaxes(a, 2, 0))
print("\n")
print("调用 swapaxes 函数后的数组:")
# 交换轴1和轴0
print(np.swapaxes(a, 1, 0))
运行结果

原数组: [[[0 1] [2 3]]

[[4 5] [6 7]]]

调用 swapaxes 函数后的数组: [[[0 4] [2 6]]

[[1 5] [3 7]]]

调用 swapaxes 函数后的数组:

[[[0 1] [4 5]]

[[2 3] [6 7]]]

concatenate()open in new window

  • numpy.concatenate 是用于沿指定轴连接数组的函数。
  • 它可以沿着已有的轴连接两个或多个数组。
# 要连接的数组序列,沿着哪个轴连接数组【默认为0】
numpy.concatenate((a1, a2, ...), axis)
import numpy as np

a = np.array([[1, 2], [3, 4]])

print("第一个数组:")
print(a)
print("\n")
b = np.array([[5, 6], [7, 8]])

print("第二个数组:")
print(b)
print("\n")
# 两个数组的维度相同

print("沿轴 0 连接两个数组:")
print(np.concatenate((a, b)))
print("\n")

print("沿轴 1 连接两个数组:")
print(np.concatenate((a, b), axis=1))
运行结果

第一个数组: [[1 2] [3 4]]

第二个数组: [[5 6] [7 8]]

沿轴 0 连接两个数组: [[1 2] [3 4] [5 6] [7 8]]

沿轴 1 连接两个数组: [[1 2 5 6] [3 4 7 8]]

numpy.itemsizeopen in new window

  • 用于表示数组中每个元素的字节大小(以字节为单位)。
import numpy as np
# 数组的 dtype 为 int8 (一字节)
x = np.array([1, 2, 3, 4, 5], dtype=np.int8)
y = np.array([1, 2, 3, 4, 5], dtype=np.int16)
z = np.array([1, 2, 3, 4, 5], dtype=np.int32)
print(x.itemsize, y.itemsize, z.itemsize)
运行结果

1 2 4

slice()open in new window

  • slice() 函数是用于创建切片对象的内建函数。
# 起始位置,终止位置,步长
slice(start, stop, step)
import numpy as np
# 从索引 2 开始到索引 7 停止,间隔为2
a = np.arange(10)
s = slice(2, 7, 2)
print(a[s])
运行结果

[2 4 6]

import numpy as np

a = np.arange(10)
s = slice(1, 9, 2)
print(a[s])
运行结果

[1 3 5 7]

split()open in new window

  • numpy.split 函数用于将数组沿指定轴分割为多个子数组。
# 要分割的数组,分割点的位置或分割的块数,沿着哪个轴进行分割【默认为0】
split(ary, indices_or_sections, axis=0)
import numpy as np

a = np.arange(9)

print("第一个数组:")
print(a)
print("\n")

print("将数组分为三个大小相等的子数组:")
b = np.split(a, 3)
print(b)
print("\n")

print("将数组在一维数组中表明的位置分割:")
b = np.split(a, [4, 7])
print(b)
运行结果

第一个数组: [0 1 2 3 4 5 6 7 8]

将数组分为三个大小相等的子数组: [array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8])]

将数组在一维数组中表明的位置分割: [array([0, 1, 2, 3]), array([4, 5, 6]), array([7, 8])]

broadcast_to()open in new window

  • numpy.broadcast_to 函数用于将数组广播到新形状。
# 输入数组,新的形状,默认false【为true返回子类,否则返回基类】
numpy.broadcast_to(array, shape, subok)
import numpy as np

a = np.arange(4).reshape(1, 4)

print("原数组:")
print(a)
print("\n")

print("调用 broadcast_to 函数之后:")
print(np.broadcast_to(a, (4, 4)))
运行结果

原数组: [[0 1 2 3]]

调用 broadcast_to 函数之后: [[0 1 2 3] [0 1 2 3] [0 1 2 3] [0 1 2 3]]

sort()open in new window

  • numpy.sort 函数用于对数组进行排序。
# 要排序的数组, 沿着哪个轴进行排序【默认为最后一个轴】, 排序算法【默认快速排序】, 按该字段排序
numpy.sort(a, axis, kind, order)
import numpy as np

a = np.array([[3, 7], [9, 1]])
print("我们的数组是:")
print(a)
print("\n")
print("调用 sort() 函数:")
print(np.sort(a))
print("\n")
print("按列排序:")
print(np.sort(a, axis=0))
print("\n")
# 在 sort 函数中排序字段
dt = np.dtype([("name", "S10"), ("age", int)])
a = np.array([("raju", 21), ("anil", 25), ("ravi", 17), ("amar", 27)], dtype=dt)
print("我们的数组是:")
print(a)
print("\n")
print("按 name 排序:")
print(np.sort(a, order="name"))
运行结果

我们的数组是: [[3 7] [9 1]]

调用 sort() 函数: [[3 7] [1 9]]

按列排序: [[3 1] [9 7]]

我们的数组是: [(b'raju', 21) (b'anil', 25) (b'ravi', 17) (b'amar', 27)]

按 name 排序: [(b'amar', 27) (b'anil', 25) (b'raju', 21) (b'ravi', 17)]

view()open in new window

  • view 是指数组的一个视图,它与原始数组共享数据存储
  • 使用视图,你可以在不复制实际数据的情况下查看或修改数组的某个部分
import numpy as np

# 最开始 a 是个 3X2 的数组
a = np.arange(6).reshape(3, 2)
print("数组 a:")
print(a)
print("创建 a 的视图:")
b = a.view()
print(b)
print("两个数组的 id() 不同:")
print("a 的 id():")
print(id(a))
print("b 的 id():")
print(id(b))
# 修改 b 的形状,并不会修改 a
b.shape = 2, 3
print("b 的形状:")
print(b)
print("a 的形状:")
print(a)
运行结果

数组 a:

[[0 1] [2 3] [4 5]]

创建 a 的视图:

[[0 1] [2 3] [4 5]]

两个数组的 id() 不同:

a 的 id():

2045124909104

b 的 id():

2045534034832

b 的形状:

[[0 1 2] [3 4 5]]

a 的形状:

[[0 1] [2 3] [4 5]]

copy()

  • numpy.copy 函数用于创建数组的独立副本。
  • 独立副本意味着新数组与原数组不共享数据缓冲区,因此对其中一个数组的修改不会影响另一个数组。
import numpy as np

# 创建一个原始数组
arr = np.array([1, 2, 3, 4, 5])

# 创建一个独立副本
arr_copy = np.copy(arr)

# 修改副本
arr_copy[0] = 10

# 原数组不受影响
print(arr)
print(arr_copy)
运行结果

[1 2 3 4 5]

[10 2 3 4 5]

amin() & amax()open in new window

  • numpy.amin() 用于计算数组中的元素沿指定轴的最小值
  • numpy.amax() 用于计算数组中的元素沿指定轴的最大值
import numpy as np

a = np.array([[3, 7, 5], [8, 4, 3], [2, 4, 9]])
print("我们的数组是:")
print(a)
print("\n")
print("调用 amin() 函数:")
print(np.amin(a, 1))  # 1 表示轴1,即横轴
print("\n")
print("再次调用 amin() 函数:")
print(np.amin(a, 0))  # 0 表示轴0,即纵轴
print("\n")
print("调用 amax() 函数:")
print(np.amax(a))  # 不加参数表示数组整体元素的最大值
print("\n")
print("再次调用 amax() 函数:")
print(np.amax(a, axis=0))
运行结果

我们的数组是: [[3 7 5] [8 4 3] [2 4 9]]

调用 amin() 函数: [3 3 2]

再次调用 amin() 函数: [2 4 3]

调用 amax() 函数: 9

再次调用 amax() 函数: [8 7 9]

Pandas

loc[]

  • loc 是 Pandas 中用于通过标签进行索引和选择数据的方法。
  • 它主要用于基于行标签和列标签选择数据。
# 行标签,列标签
DataFrame.loc[row_label, column_label]
import pandas as pd

# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35],
        'City': ['New York', 'San Francisco', 'Los Angeles']}

df = pd.DataFrame(data)
print(df)

# 使用 loc 选择数据
selected_data = df.loc[1, 'Name']

print(selected_data)
运行结果

​ Name Age City

0 Alice 25 New York

1 Bob 30 San Francisco

2 Charlie 35 Los Angeles

Bob

iloc[]

  • iloc 是 Pandas 中用于通过整数位置进行索引和选择数据的方法。
  • 它主要用于基于行和列的整数位置选择数据。
# 行的整数位置,列的整数位置
DataFrame.iloc[row_index, column_index]
import pandas as pd

# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35],
        'City': ['New York', 'San Francisco', 'Los Angeles']}

df = pd.DataFrame(data)
print(df)

# 使用 iloc 选择数据
selected_data = df.iloc[1, 0]

print(selected_data)
运行结果

​ Name Age City

0 Alice 25 New York

1 Bob 30 San Francisco

2 Charlie 35 Los Angeles

Bob

Matplotlib

plt.title()

  • 在 Matplotlib 中,plt.title 函数用于为图形添加标题。
  • 标题通常用于描述图形的内容或提供关键信息。
import matplotlib.pyplot as plt

# 创建一个简单的折线图
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

plt.plot(x, y)

# 添加标题
plt.title("Simple Line Chart", fontsize=16, color="blue", loc="left", pad=20)

# 显示图形
plt.show()
运行结果

在这个例子中,plt.title 添加了一个标题,标题文本为 'Simple Line Chart',字体大小为16,颜色为蓝色,位置在左侧,距离图形顶部的距离为20点。

image-20240104091602745

plt.xlabel()

  • plt.xlabel 是 Matplotlib 中用于为图形添加 x 轴标签的函数。
  • 标签通常用于描述 x 轴的内容或提供关键信息。
import matplotlib.pyplot as plt

# 创建一个简单的折线图
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

plt.plot(x, y)

# 添加 x 轴标签
plt.xlabel("X-axis", fontsize=14, color="green", labelpad=10)

# 显示图形
plt.show()
运行结果

在这个例子中,plt.xlabel 添加了一个 x 轴标签,标签文本为 'X-axis',字体大小为14,颜色为绿色,距离 x 轴的距离为10点。

image-20240104091916474

plt.ylabel()

  • plt.ylabel 是 Matplotlib 中用于为图形添加 y 轴标签的函数。
  • 标签通常用于描述 y 轴的内容或提供关键信息。
import matplotlib.pyplot as plt

# 创建一个简单的折线图
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

plt.plot(x, y)

# 添加 y 轴标签
plt.ylabel('Y-axis', fontsize=14, color='purple', labelpad=15)

# 显示图形
plt.show()
运行结果

在这个例子中,plt.ylabel 添加了一个 y 轴标签,标签文本为 'Y-axis',字体大小为14,颜色为紫色,距离 y 轴的距离为15点。

image-20240104092356614

plt.plot()

  • plt.plot() 是 Matplotlib 库中用于绘制图表的函数之一。
  • 它主要用于绘制二维数据,例如折线图、散点图等。
import matplotlib.pyplot as plt

# 创建一个简单的折线图
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

plt.plot(x, y, marker='o', linestyle='-', color='blue', label='Line 1')

# 添加标题和标签
plt.title('Simple Line Chart')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')

# 添加图例
plt.legend()

# 显示图形
plt.show()
运行结果

在这个例子中,plt.plot(x, y, marker='o', linestyle='-', color='blue', label='Line 1') 绘制了一个带有圆点标记、实线、蓝色颜色的折线图,并添加了一个标签 'Line 1'。随后,通过 plt.titleplt.xlabelplt.ylabel 添加了标题和轴标签,通过 plt.legend 添加了图例。

image-20240104092722665

plt.bar()

  • plt.bar() 是 Matplotlib 中用于绘制条形图的函数。
import matplotlib.pyplot as plt

# 创建一个简单的条形图
categories = ['A', 'B', 'C', 'D']
values = [3, 7, 2, 5]

plt.bar(categories, values, color='green', width=0.5, align='center', label='Category Values')

# 添加标题和标签
plt.title('Simple Bar Chart')
plt.xlabel('Categories')
plt.ylabel('Values')

# 添加图例
plt.legend()

# 显示图形
plt.show()
运行结果

在这个例子中,plt.bar(categories, values, color='green', width=0.5, align='center', label='Category Values') 绘制了一个简单的条形图,每个条形表示一个类别的值。随后,通过 plt.titleplt.xlabelplt.ylabel 添加了标题和轴标签,通过 plt.legend 添加了图例。

image-20240104092846449

plt.show()

  • plt.show() 是 Matplotlib 中用于显示图形的函数。
  • 当你绘制完图形之后,需要调用 plt.show() 才能将图形显示出来。
import matplotlib.pyplot as plt

# 创建一个简单的折线图
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

plt.plot(x, y)

# 显示图形
plt.show()
运行结果

在这个例子中,plt.show() 将显示由 plt.plot(x, y) 绘制的折线图。确保在你的代码中包含 plt.show(),以便在需要时显示图形。

image-20240104092948571

编辑于 2024/1/4 09:37:36