python数据分析和可视化——一篇文章足以(未完成)-2

简介: python数据分析和可视化——一篇文章足以(未完成)

第三节 分词处理

Numpy简介   虽然在Python中包含许多的标准库能够处理文本和数值类型的数据,但Python还有更为丰富的第三方组件更擅长与各类数据打交道,例如Xlrd、Numpy、Scipy、Pandas等。这些组件它们侧重于数据处理,提供了一些强大的功能,比如数据统计、科学计算、统计建模等。其中Numpy是最为基础和常见的一个科学计算库。Numpy是一个运行速度非常快的数学库,主要用于数组计算,包括:强大的N维数组对象ndarray、广播功能函数、线性代数、傅里叶变换、随机数生成等功能。


import numpy as np
ndarray_a = np.array([[1, 2, 3], [4, 5, 6]])
ndarray_b = np.arange(12)
print("数组a中的类型是:", type(ndarray_a))
print("数组a中的内容是:\n", ndarray_a)
print("数组b中的类型是:", type(ndarray_b))
print("数组b中的内容是:\n", ndarray_b)


image.png


 ndarray属性 在ndarray中,有几个重要的属性:数据的类型、秩(轴)、形状、元素个数。  数据的类型。Numpy支持的数据类型比Python内置的基本类型要多得多,可以通过numpy.dtype来查看ndarray的数据类型。  秩(轴)。ndarray的维度被称为秩,秩就是ndarray轴的数量,即数组的维度,一维数组的秩是1,二维数组的秩是2,可以通过ndarray.ndim来查看。  形状。ndarray的形状通过一个元组来描述,元组中的第一个数代表ndarray的第一个维度,第二个数代表第二个维度,以此类推。通过ndarray.shape查看数组的形状。  元素个数。ndarray的元素总个数可以通过ndarray.size查看,其结果相当于形状中所有数值的乘积。


import numpy as np
ndarray_a = np.array([1, 2, 3])
ndarray_b = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float32)
print("数组a中的数据类型是:", ndarray_a.dtype)
print("数组b中的数据类型是:", ndarray_b.dtype)
print("数组a中的秩是:", ndarray_a.ndim)
print("数组b中的秩是:", ndarray_b.ndim)
print("数组a的形状是:", ndarray_a.shape)
print("数组b的形状是:", ndarray_b.shape)
print("数组a的元素总个数是:", ndarray_a.size)
print("数组b的元素总个数是:", ndarray_b.size)

快速创建特殊的ndarray  使用numpy.empty来创建一个空的数组。  使用numpy.zeros来创建一个全0的数组,数组中的各个元素均为0。  使用numpy.ones来创建一个全1的数组,数组中的各个元素均为1。  使用numpy.eye来创建一个对角线为1的数组,数组中其他元素均为0。


import numpy as np
ndarray_empty = np.empty((2, 3))
ndarray_ones = np.ones((3, 2))
ndarray_zeros = np.zeros((3, 3))
ndarray_eye = np.eye(3)
print("创建的空ndarray是:\n", ndarray_empty)
print("创建的全一ndarray是:\n", ndarray_ones)
print("创建的全零ndarray是:\n", ndarray_zeros)
print("创建的对角线ndarray是:\n", ndarray_eye)

改变ndarray形状 ndarray的形状是可以改变的,比如一个元素总个数为24的数组,通过ndarray.reshape可以将该数组改变成2x12、4x6、2x3x4等各种符合元素个数的形状。


import numpy as np
ndarray_c = np.arange(24)
print("ndarray_c未改变形状之前的形状是:", ndarray_c.shape)
ndarray_c = ndarray_c.reshape(2, 12)
print("ndarray_c改变形状之后的形状是:", ndarray_c.shape)
ndarray_c = ndarray_c.reshape(4, 6)
print("ndarray_c改变形状之后的形状是:", ndarray_c.shape)
ndarray_c = ndarray_c.reshape(2, 3, 4)
print("再次改变ndarray_c的形状后,结果是:", ndarray_c.shape)

ndarray的索引机制 ndarray对象的内容可以通过索引来访问和修改,其方式基本与Python中list的操作一样。


import numpy as np
ndarray_d = np.arange(12)
print("ndarray_d数组的内容是:\n", ndarray_d)
print("ndarray_d数组中第2个元素是:", ndarray_d[1])
ndarray_d[5] = 20
print("ndarray_d数组的内容是:\n", ndarray_d)

数组的索引与切片  对于一维数组 可以通过[index1]获取index1索引位置的某个元素 也可以通过[start: end]获取索引从start开始到end-1处的一段元素 还可以通过[start: end: step]获取步长为step的start开始到end-1处的一段元素  对于多维数组 可以通过[rank1_index, rank2_index,…],获取ndarray数组中处于指定位置处的某个元素。 也可以通过[rank1_start: rank1_end, rank2_start: rank2_end, …]获取索引从start开始到end-1处的一段元素 还可以通过使用省略号…来对剩余rank进行缺省


import numpy as np
ndarray_e = np.arange(24)
ndarray_f = np.arange(24).reshape(2, 3, 4)
print("ndarray_e:\n", ndarray_e)
print("ndarray_f:\n", ndarray_f)
print("对ndarray_e进行切片,获取索引为2-12处的所有元素:", ndarray_e[2: 13])
print("对ndarray_e进行切片,指定步长为2,获取索引为2-12处的所有元素:", ndarray_e[2: 13: 2])
print("对ndarray_f进行切片,秩1上索引为1&秩2上索引为1-2&秩3上索引为0-1的元素:\n", ndarray_f[1, 1:3, 0:2])
print("对ndarray_f进行切片,秩0上索引为1&秩2上索引为1到剩余的所有元素:\n", ndarray_f[0, 1: , ...])

Numpy广播机制 NumPy广播是NumPy对不同形状的数组进行数值计算的方式,NumPy广播要求对数组的算术运算通常在相应的元素上进行。如果当运算中的2个数组的形状不同时,numpy将自动触发广播机制: 让所有输入数组都向其中形状最长的数组看齐,形状中不足的部分都在前面加1补齐。 输出数组的形状是输入数组形状的各个维度上的最大值。 如果输入数组的某个维度和输出数组的对应维度的长度相同或者其长度为1时,这个数组能够用来计算,否则出错。 当输入数组的某个维度的长度为1时,沿着此维度运算时都用此维度上的第一组值。 简单的说,当两个数组计算时,会比较它们的每个维度(若其中一个数组没有当前维度则忽略),如果满足以下三个条件则触发广播机制: 数组拥有相同形状。 当前维度的值相等。 当前维度的值有一个是1。 若条件不满足,则抛出"ValueError: frames are not aligned"异常。


ndarray_g = np.arange(12).reshape(4, 3)
ndarray_h = np.arange(3)
print("ndarray_g的形状是:", ndarray_g.shape)
print("ndarray_h的形状是:", ndarray_h.shape)
print("ndarray_g与ndarray_h相加后的结果是:\n", ndarray_g+ndarray_h)
ndarray_i = np.arange(24).reshape(2, 4, 3)
print("ndarray_g与ndarray_i相加后的结果是:\n", ndarray_g+ndarray_i)

numpy pands

【pip install pands】


image.png


Series


下载的时候比较慢,等一会就好了。


import numpy as np

import pandas as pd

series_a = pd.Series(np.arange(5), index=["a", "b", "c", "d", "e"])

print("series_a的类型是:", type(series_a))

print("series_a:")

print(series_a)

series_a["a"] = 5

print("series_a:")

print(series_a)

series_b = pd.Series([8, 6, -5, 2], index=["a", "b", "c", "d"])

print(series_b[series_b > 0])  #获取值大于0的数据。

print(series_b * 2)  #输出Series对象中每个数据乘2之后的结果。

print("a" in series_b)  #判断obj对象中是否存在索引值为"a"的数据。

print(series_b.isnull()) #检测缺失数据

series_b.index = ["f","g","k","m"]

print(series_b)


输出结果如下:


series_a的类型是: <class 'pandas.core.series.Series'>

series_a:

a    0

b    1

c    2

d    3

e    4

dtype: int32

series_a:

a    5

b    1

c    2

d    3

e    4

dtype: int32

a    8

b    6

d    2

dtype: int64

a    16

b    12

c   -10

d     4

dtype: int64

True

a    False

b    False

c    False

d    False

dtype: bool

f    8

g    6

k   -5

m    2

dtype: int64


Process finished with exit code 0


DataFrame


DataFrame数据结构  DataFrame是由多种类型的列构成的二维标签数据结构,类似于Excel、SQL表,或Series 对象构成的字典。  与Series不同的是,DataFrame具有两个索引,通过传递索引可以定位到具体的数值。


image.png


import pandas as pd
import numpy as np
frame_a = pd.DataFrame(np.arange(6).reshape(2, 3),
                       index=["a", "b"],
                       columns=["x", "y", "z"],
                       dtype=np.float32)
print(frame_a)
import pandas as pd
import numpy as np
frame_c = pd.DataFrame(np.arange(12).reshape(3, 4),
                       index=["a", "b", "c"],
                       columns=["w", "x", "y", "z"])
print("frame_c的行索引是:", frame_c.index)
print("frame_c的列索引是:", frame_c.columns)
print("frame_c中第二行第3个元素是:", frame_c.iloc[1, 2])
print("frame_c中行索引为\"a\"、列索引为\"x\"的元素是:", frame_c.loc["a"]["x"])
frame_c.iloc[1, 2] = 99
print("修改frame_c中第二行第3个元素后,frame_c是:")
print(frame_c)
print("frame_c丢弃\"z\"列后的结果是:")
print(frame_c.drop("z", axis=1))
print("frame_c丢弃\"a\"行后的结果是:")
print(frame_c.drop("a"))


image.png


排序与统计


import pandas as pd
import numpy as np
frame_d = pd.Series(range(4),index=["d", "a", "b", "c"])
print(frame_d.sort_index()) #sort_index函数
frame_e = pd.DataFrame(np.arange(9).reshape(3, 3),
                       columns=["z", "x", "y"],
                       index=["c", "a", "d"])
print(frame_e.sort_index())#sort_index函数
print(frame_e.sort_index(axis=1))
print(frame_e.sort_index(axis=1,ascending=False))
frame_f = pd.DataFrame({"b":[4, -3, 7, 2], "a":[1, 6, 5, 3]})
print(frame_f.sort_values(by="b"))#对"b"这一列进行升序排列
print(frame_f.sort_values(by=["a", "b"]))#同时对两列进行升序排列

输出结果


a    1

b    2

c    3

d    0

dtype: int64

  z  x  y

a  3  4  5

c  0  1  2

d  6  7  8

  x  y  z

c  1  2  0

a  4  5  3

d  7  8  6

  z  y  x

c  0  2  1

a  3  5  4

d  6  8  7

  b  a

1 -3  6

3  2  3

0  4  1

2  7  5

  b  a

0  4  1

3  2  3

2  7  5

1 -3  6


Process finished with exit code 0



image.png


计算一阶差分(对时间序列很有用)


import pandas as pd
frame_g = pd.Series(["a", "c", "a", "c", "b", "a", "d", "d"])
uniques = frame_g.unique() #获取Series中的唯一值数组
print(uniques)
uniques.sort() #对Series数组进行排序
print(uniques)
#计算Series数组各值出现的频率
print(frame_g.value_counts())
#obj各值是否包含于["b","c"]中
mask = frame_g.isin(["b","c"])
print(mask)
print(frame_g[mask]) #选取Series中数据的子集

image.png

相关文章
|
1月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析的入门指南
本文将引导读者了解如何使用Python进行数据分析,从安装必要的库到执行基础的数据操作和可视化。通过本文的学习,你将能够开始自己的数据分析之旅,并掌握如何利用Python来揭示数据背后的故事。
|
2月前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
103 4
数据分析的 10 个最佳 Python 库
|
1月前
|
数据可视化 编译器 Python
Manim:数学可视化的强大工具 | python小知识
Manim(Manim Community Edition)是由3Blue1Brown的Grant Sanderson开发的数学动画引擎,专为数学和科学可视化设计。它结合了Python的灵活性与LaTeX的精确性,支持多领域的内容展示,能生成清晰、精确的数学动画,广泛应用于教育视频制作。安装简单,入门容易,适合教育工作者和编程爱好者使用。
264 7
|
2月前
|
存储 数据可视化 数据挖掘
使用Python进行数据分析和可视化
本文将引导你理解如何使用Python进行数据分析和可视化。我们将从基础的数据结构开始,逐步深入到数据处理和分析的方法,最后通过实际的代码示例来展示如何创建直观的数据可视化。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。让我们一起探索数据的世界,发现隐藏在数字背后的故事!
|
2月前
|
存储 数据可视化 数据挖掘
Python数据分析项目:抖音短视频达人粉丝增长趋势
Python数据分析项目:抖音短视频达人粉丝增长趋势
|
2月前
|
数据采集 存储 数据可视化
Python数据分析:揭秘"黑神话:悟空"Steam用户评论趋势
Python数据分析:揭秘"黑神话:悟空"Steam用户评论趋势
|
2月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析和可视化
【10月更文挑战第42天】本文将介绍如何使用Python进行数据分析和可视化。我们将从数据导入、清洗、探索性分析、建模预测,以及结果的可视化展示等方面展开讲解。通过这篇文章,你将了解到Python在数据处理和分析中的强大功能,以及如何利用这些工具来提升你的工作效率。
|
2月前
|
数据采集 数据可视化 数据挖掘
掌握Python数据分析,解锁数据驱动的决策能力
掌握Python数据分析,解锁数据驱动的决策能力
|
5月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
97 2
|
5月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
263 4