python不同数据结构的操作区别
一、遍历
1、对于列表的遍历
languages = ["Regional Assembly Language","Autocode","FORTRAN","IPL (LISP的先驱)"]
for language in languages:
print(language)
输出结果:每次返回逗号之前

2、对于字典的遍历
install = {
"Windows": "请下载 Windows 安装包安装:https://www.python.org/downloads/windows/",
"CentOS": "使用yum包管理器,执行命令:yum install -y python3",
"Ubuntu": "使用apt-get包管理器,执行命令:apt-get install -y python3",
"MacOS": "安装brew包管理器,然后执行命令: brew install python3",
}
for platform in install:
print(platform)
输出结果:每次返回字典的键(KEY)

3、对于dataframe的遍历
如下图是一个dataframe,dataframe可以看做是一个excel,每一行由一个中括号表示。

for x_input in x_inputs:
print(x_input)
输出结果:遍历是得到每一行

二、索引
1、对于列表的索引
programmers = [
"约翰·巴科斯(JohnWarnerBackus), 创建了Fortran语言",
"阿兰·库珀(Alan Cooper), 开发了Visual Basic语言",
"詹姆斯·高斯林(James Gosling), 开发了Java语言",
"安德斯·海尔斯伯格(Anders Hejlsberg), 开发了Turbo Pascal、Delphi、C#以及TypeScript",
"丹尼斯·里奇(Dennis MacAlistair Ritchie), 发明了C语言",
"比雅尼·斯特劳斯特鲁普(Bjarne Stroustrup), 他以创造C++编程语言而闻名,被称为“C++之父”",
"吉多·范罗苏姆(Guido van Rossum), 创造了 Python"
]
print(programmers[0])
输出结果:

对于列表使用[]的方式进行索引
对于列表中叠列表的情况,比如下图,一个列表中有四个小列表

采用二维数组的引用方式,第一个索引找到小列表,第二个索引找到小列表中对应的值
numsarr[i][1]
2、对于字典的索引
install = {
"Windows": "请下载 Windows 安装包安装:https://www.python.org/downloads/windows/",
"CentOS": "使用yum包管理器,执行命令:yum install -y python3",
"Ubuntu": "使用apt-get包管理器,执行命令:apt-get install -y python3",
"MacOS": "安装brew包管理器,然后执行命令: brew install python3",
}
print(install.get('Windows'))
输出结果:

对于字典,使用.get的方法得到字典的值。
3、对于DataFrame的索引
DataFrame是Pandas中特有的一种数据结构。
import pandas as pd
import numpy as np
data = pd.read_excel("data6.xls")#根据每个月的预处理文件名做修改
print(data)

现有这样的一个DataFrame
print(data['T'])
可以使用[‘’]里面用列名的方式,提取一整列

然后使用.iloc[]的方式提取具体某一行
print(data['T'].iloc[0])

若要使用iloc提取某一列,[:,0],冒号:前不加东西表明选择所有行。
例如下面的代码,:,表示选取所有行,1:14表示选取第一列至第14列
x_inputs = shaobing.iloc[:, 1:14].values
print(x_inputs)
x_inputs = shaobing.iloc[:, 1:14]
print(x_inputs)
输出结果:加.values的区别就在于是否显示行索引和列索引

对于字符串的索引
while True:
ret = input('请输入字符串:')
print(ret[0],ret[1],ret[2])
输出结果:字符串也使用[]加数字的方式索引

三、数值计算
1、dataframe
dataframe最强大的功能就是类似于并且强于excel的数据处理能力,可以把dataframe看做是excel表格
①作差
以下面的两个dataframe举例
A

B

这A和B的df,列数一样,不过B只有一行,直接相减会得到什么
print(lookup_table[:, :-1] - x_input)
输出结果:dataframe把A的每一行减去了B
试想一下,这样的操作在excel中是不是会很麻烦?
②求平方、对数
np.square()会将每一个元素做平方,np.log()会求每一个元素的底数
dataframe与numpy的结合,就相当于excel中添加了函数计算功能。
③求均值
np.mean(np.square(lookup_table[:, :-1] - x_input), axis=1)
axis=1表示计算每一行的元素均值,axis=0表示计算每一列的均值
④求最小值的位置
import numpy as np
losses = np.array([3.5, 2.2, 4.7, 1.8, 5.1])
idx = np.argmin(losses)
print(idx)
输出得到3
2、列表
列表支持一些简单的计算,比如求列表中的最小值,最大值。不过因为维度的关系(见下文显示方式),列表只有一行,无法满足多行列数据的存储和操作需求
四、显示方式
1、列表转array前后
lai_preds = []
for x_input in x_inputs:
lai_pred1 = predict_lai(x_input, lookup_table)
lai_preds.append(lai_pred1)
lai_pred = np.array(lai_preds)
print(lai_preds)
print(lai_pred)
输出结果:第一个输出是列表,列表不会转行,打印时会都摆放在一行中。第二个输出是array,转array的结果就是改变了列表的维度,把一行弯折成好几行了。

列表转成array应该是为了调用numpy下面的便于计算的函数。
五、添加
1、列表
列表的添加方式是[].append()
六、初始化
创建一个纯0的数据结构
1、列表
res = [0 for _ in range(n)]
输出结果为[0,0,0,0,0,0]
2、array
调用np.zeros(m/m,n)
本文介绍了Python中不同数据结构,如列表、字典和dataframe的操作方法,包括遍历(如返回列表元素、字典键)和索引(如列表的[]操作、字典的.get方法及dataframe的列名和.iloc索引)。此外,还讨论了数值计算,如dataframe的差、平方、对数计算,以及numpy的均值和最小值位置。文章强调了数据结构在实际操作中的差异和转换的重要性,如列表到array的转换以利用numpy的功能。
974

被折叠的 条评论
为什么被折叠?



