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

相关文章
|
10天前
|
数据挖掘 PyTorch TensorFlow
|
12天前
|
数据采集 数据挖掘 数据处理
使用Python和Pandas进行数据分析基础
使用Python和Pandas进行数据分析基础
33 5
|
2天前
|
机器学习/深度学习 数据挖掘 大数据
大数据时代的“淘金术”:Python数据分析+深度学习框架实战指南
在大数据时代,数据被视为新财富源泉,而从海量信息中提取价值成为企业竞争的核心。本文通过对比方式探讨如何运用Python数据分析与深度学习框架实现这一目标。Python凭借其强大的数据处理能力及丰富库支持,已成为数据科学家首选工具;而TensorFlow和PyTorch等深度学习框架则为复杂模型构建提供强有力的技术支撑。通过融合Python数据分析与深度学习技术,我们能在各领域中发掘数据的无限潜力。无论是商业分析还是医疗健康,掌握这些技能都将为企业和社会带来巨大价值。
19 6
|
8天前
|
数据采集 传感器 数据可视化
利用Python进行数据分析与可视化
【9月更文挑战第11天】在数字化时代,数据已成为企业决策和科学研究的关键。本文将引导读者了解如何使用Python这一强大的工具进行数据分析和可视化,帮助初学者理解数据处理的流程,并掌握基本的可视化技术。通过实际案例,我们将展示如何从原始数据中提取信息,进行清洗、处理,最终以图形方式展现结果,使复杂的数据变得直观易懂。
|
9天前
|
机器学习/深度学习 数据挖掘 TensorFlow
🔍揭秘Python数据分析奥秘,TensorFlow助力解锁数据背后的亿万商机
【9月更文挑战第11天】在信息爆炸的时代,数据如沉睡的宝藏,等待发掘。Python以简洁的语法和丰富的库生态成为数据分析的首选,而TensorFlow则为深度学习赋能,助你洞察数据核心,解锁商机。通过Pandas库,我们可以轻松处理结构化数据,进行统计分析和可视化;TensorFlow则能构建复杂的神经网络模型,捕捉非线性关系,提升预测准确性。两者的结合,让你在商业竞争中脱颖而出,把握市场脉搏,释放数据的无限价值。以下是使用Pandas进行简单数据分析的示例:
24 5
|
8天前
|
机器学习/深度学习 数据可视化 数据挖掘
深入浅出:使用Python进行数据分析的入门指南
【9月更文挑战第11天】本文旨在为初学者提供一条清晰的道路,通过Python探索数据科学的奇妙世界。我们将从基础语法讲起,逐步深入到数据处理、可视化以及机器学习等高级话题。文章不仅分享理论知识,还将通过实际代码示例,展示如何应用这些知识解决实际问题。无论你是编程新手,还是希望扩展技能的数据分析师,这篇文章都将是你宝贵的资源。
|
2天前
|
机器学习/深度学习 数据挖掘 TensorFlow
解锁Python数据分析新技能,TensorFlow&PyTorch双引擎驱动深度学习实战盛宴
在数据驱动时代,Python凭借简洁的语法和强大的库支持,成为数据分析与机器学习的首选语言。Pandas和NumPy是Python数据分析的基础,前者提供高效的数据处理工具,后者则支持科学计算。TensorFlow与PyTorch作为深度学习领域的两大框架,助力数据科学家构建复杂神经网络,挖掘数据深层价值。通过Python打下的坚实基础,结合TensorFlow和PyTorch的强大功能,我们能在数据科学领域探索无限可能,解决复杂问题并推动科研进步。
11 0
|
10天前
|
机器学习/深度学习 数据挖掘 TensorFlow
从数据小白到AI专家:Python数据分析与TensorFlow/PyTorch深度学习的蜕变之路
【9月更文挑战第10天】从数据新手成长为AI专家,需先掌握Python基础语法,并学会使用NumPy和Pandas进行数据分析。接着,通过Matplotlib和Seaborn实现数据可视化,最后利用TensorFlow或PyTorch探索深度学习。这一过程涉及从数据清洗、可视化到构建神经网络的多个步骤,每一步都需不断实践与学习。借助Python的强大功能及各类库的支持,你能逐步解锁数据的深层价值。
23 0
|
1月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
44 2
|
1月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。