python不同数据结构的操作区别

本文介绍了Python中不同数据结构,如列表、字典和dataframe的操作方法,包括遍历(如返回列表元素、字典键)和索引(如列表的[]操作、字典的.get方法及dataframe的列名和.iloc索引)。此外,还讨论了数值计算,如dataframe的差、平方、对数计算,以及numpy的均值和最小值位置。文章强调了数据结构在实际操作中的差异和转换的重要性,如列表到array的转换以利用numpy的功能。

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海绵波波107

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值