Python学习之路(数据类型)
第一篇技术博文纪念。我写这篇博文的原因是因为本人在利用python处理试验数据的时候,往往因为数据类型往往理不清,导致bug频出,因此打算写下此博文作为技术学习的milestone。(代码大部分均利用ChatGPT进行整理),它能够很好的帮我整理了解资料内容,好了废话就说到这。上菜!!!
python的数据类型
Python 中的几种常见的数据类型:
- 整数(int):表示整数值,例如:42。
- 浮点数(float):表示带有小数部分的数值,例如:3.14。
- 字符串(str):表示文本数据,使用引号(单引号或双引号)括起来,例如:“Hello, World!”。
- 布尔值(bool):表示真或假的值,只有两个可能的取值:True 或 False。
- 列表(list):表示有序的可变集合,可以包含不同类型的元素,用方括号括起来,例如:[1, 2, 3]。
- 元组(tuple):表示有序的不可变集合,可以包含不同类型的元素,用圆括号括起来,例如:(1, 2, 3)。
- 集合(set):表示无序的唯一元素的集合,用花括号括起来,例如:{1, 2, 3}。
- 字典(dict):表示键值对的无序集合,用花括号括起来,并使用冒号分隔键值对,例如:{“name”: “Alice”, “age”: 25}。
此外,Python 还支持其他一些高级的数据类型,如日期时间(datetime)、字节串(bytes)等。还可以使用各种库和模块来处理更复杂的数据类型,例如 NumPy 数组、Pandas 数据帧等。
1.List数据类型的操作
# 创建列表
my_list = [1, 2, 3, 4, 5]
print("原始列表:", my_list)
# 访问元素
print("第一个元素:", my_list[0])
# 修改元素
my_list[2] = 10
print("修改后的列表:", my_list)
# 添加元素
my_list.append(6)
print("添加元素后的列表:", my_list)
my_list.insert(2, 7)
print("插入元素后的列表:", my_list)
# 删除元素
my_list.remove(10)
print("删除指定元素后的列表:", my_list)
del my_list[0]
print("删除指定索引处元素后的列表:", my_list)
# 切片操作
slice_list = my_list[1:4]
print("切片后的列表:", slice_list)
# 列表长度
length = len(my_list)
print("列表长度:", length)
在 Python 中,数组(列表)的索引是从0开始的,而不是从1开始。
这意味着,如果你有一个长度为n的数组,它的索引范围是从0到n-1。第一个元素的索引是0,第二个元素的索引是1,依此类推(我的理解list是以方括号的形式呈现}
2.元祖tuple
是在 Python 中用于存储多个元素的有序且不可变的数据类型。
元组使用圆括号 ()
来表示,并且每个元素之间用逗号 ,
分隔。
以下是元组常用的操作示例:
- 创建元组:
my_tuple = (1, 2, 3, 4, 5) # 创建一个包含整数的元组
my_tuple2 = ('apple', 'banana', 'cherry') # 创建一个包含字符串的元组
my_tuple3 = (1, 'apple', True) # 创建一个包含不同类型元素的元组
- 访问元素:
print(my_tuple[0]) # 输出元组中的第一个元素,索引从 0 开始,输出:1
print(my_tuple2[1]) # 输出元组中的第二个元素,输出:banana
- 元组是不可变的,意味着不能修改元组中的元素。例如,以下操作将引发 TypeError 错误:
my_tuple[2] = 10 # 尝试修改元组中的元素,会引发 TypeError 错误
- 元组长度:
length = len(my_tuple) # 获取元组的长度
print(length) # 输出元组的长度:5
- 元组拆包:
a, b, c = my_tuple2 # 将元组中的元素分配给变量
print(a) # 输出拆包后的第一个元素:apple
print(b) # 输出拆包后的第二个元素:banana
print(c) # 输出拆包后的第三个元素:cherry
- 元组可以作为字典的键:
my_dict = {(1, 2): 'value'} # 使用元组作为字典的键
print(my_dict[(1, 2)]) # 输出对应的值:value
元组的主要特点是它是不可变的,一旦创建就不能修改。因此,元组没有像列表那样的修改、添加或删除元素的方法。元组在需要存储一组固定数据的场景中非常有用,例如用于表示坐标、日期时间等不可变数据。
3.Numpy数组
NumPy(Numerical Python)是一个用于科学计算和数据处理的 Python 库,它提供了高性能的多维数组对象(ndarray)以及对数组进行操作的各种函数。NumPy 数组是一个固定大小的元素网格,所有元素都是相同类型的。
下面是 NumPy 数组的一些常见操作示例:
- 导入 NumPy 库:
import numpy as np
- 创建 NumPy 数组:
# 从列表创建数组
my_list = [1, 2, 3, 4, 5]
my_array = np.array(my_list)
print(my_array)
# 创建多维数组
my_2d_array = np.array([[1, 2, 3], [4, 5, 6]])
print(my_2d_array)
- 访问数组元素:
print(my_array[0]) # 访问数组中的第一个元素
print(my_2d_array[1, 2]) # 访问二维数组中的特定元素
- 数组形状和尺寸:
print(my_array.shape) # 输出数组的形状
print(my_2d_array.shape) # 输出二维数组的形状
print(my_array.size) # 输出数组的大小(元素个数)
- 修改数组元素:
my_array[2] = 10 # 修改数组中的元素
print(my_array)
my_2d_array[1, 2] = 20 # 修改二维数组中的元素
print(my_2d_array)
- 数组运算:
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
sum_array = array1 + array2 # 数组相加
print(sum_array)
product_array = array1 * array2 # 数组相乘
print(product_array)
mean_value = np.mean(array1) # 计算数组的平均值
print(mean_value)
这些只是 NumPy 数组的一些基本操作示例。NumPy 还提供了丰富的功能,包括索引和切片、数组重塑、数组拼接、数学函数、线性代数运算等。通过这些操作,你可以高效地处理和操作数组数据。可以通过安装 NumPy 库,并参考 NumPy 官方文档来获取更详细的操作说明和示例代码。
除了上述提到的基本操作外,NumPy 还提供了许多其他有用的数组操作。以下是一些常见的 NumPy 数组操作示例:
- 数组切片和索引:
my_array = np.array([1, 2, 3, 4, 5])
print(my_array[1:4]) # 切片操作,提取索引 1 到索引 3 的元素(不包括索引 4)
print(my_array[[0, 2, 4]]) # 使用索引数组进行索引,输出指定索引处的元素
- 数组形状操作:
my_array = np.array([[1, 2, 3], [4, 5, 6]])
print(my_array.shape) # 输出数组的形状
print(my_array.ndim) # 输出数组的维度
print(my_array.size) # 输出数组的大小(元素个数)
print(my_array.reshape(3, 2)) # 重塑数组形状
- 数组拼接和分割:
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
print(np.concatenate([array1, array2])) # 数组拼接
print(np.vstack([array1, array2])) # 垂直堆叠数组
print(np.hstack([array1, array2])) # 水平堆叠数组
print(np.split(array1, 3)) # 将数组分割为多个子数组
- 数组统计和数学函数:
my_array = np.array([1, 2, 3, 4, 5])
print(np.min(my_array)) # 数组最小值
print(np.max(my_array)) # 数组最大值
print(np.sum(my_array)) # 数组元素求和
print(np.mean(my_array)) # 数组平均值
print(np.std(my_array)) # 数组标准差
print(np.exp(my_array)) # 对数组元素进行指数运算
这些仅是 NumPy 数组的一些常见操作示例,NumPy 还提供了许多其他功能,如数组排序、线性代数运算、随机数生成、布尔运算等。你可以参考 NumPy 官方文档或其他教程资源,以深入了解 NumPy 提供的丰富功能和操作。
除了上述提到的基本操作外,NumPy 还提供了许多其他有用的数组操作。以下是一些常见的 NumPy 数组操作示例:
- 数组切片和索引:
my_array = np.array([1, 2, 3, 4, 5])
print(my_array[1:4]) # 切片操作,提取索引 1 到索引 3 的元素(不包括索引 4)
print(my_array[[0, 2, 4]]) # 使用索引数组进行索引,输出指定索引处的元素
- 数组形状操作:
my_array = np.array([[1, 2, 3], [4, 5, 6]])
print(my_array.shape) # 输出数组的形状
print(my_array.ndim) # 输出数组的维度
print(my_array.size) # 输出数组的大小(元素个数)
print(my_array.reshape(3, 2)) # 重塑数组形状
- 数组拼接和分割:
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
print(np.concatenate([array1, array2])) # 数组拼接
print(np.vstack([array1, array2])) # 垂直堆叠数组
print(np.hstack([array1, array2])) # 水平堆叠数组
print(np.split(array1, 3)) # 将数组分割为多个子数组
- 数组统计和数学函数:
my_array = np.array([1, 2, 3, 4, 5])
print(np.min(my_array)) # 数组最小值
print(np.max(my_array)) # 数组最大值
print(np.sum(my_array)) # 数组元素求和
print(np.mean(my_array)) # 数组平均值
print(np.std(my_array)) # 数组标准差
print(np.exp(my_array)) # 对数组元素进行指数运算
4.数据帧Dataframe格式
Pandas 数据帧(DataFrame)是 Pandas 库中用于处理和分析数据的主要数据结构之一。数据帧类似于电子表格或数据库表格,它是一个二维标记的数据结构,具有行和列,可以存储不同类型的数据。
下面是一些常见的 Pandas 数据帧操作说明:
- 导入 Pandas 库:
import pandas as pd
- 创建数据帧:
# 从列表或数组创建数据帧
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'London', 'Paris']}
df = pd.DataFrame(data)
print(df)
# 从 CSV 文件读取数据帧
df = pd.read_csv('data.csv')
- 查看数据帧:
print(df.head()) # 查看数据帧的前几行,默认显示前 5 行
print(df.tail()) # 查看数据帧的后几行,默认显示后 5 行
print(df.shape) # 查看数据帧的形状(行数,列数)
print(df.info()) # 查看数据帧的基本信息,包括列名和数据类型
- 访问数据帧数据:
print(df['Name']) # 访问指定列的数据
print(df.loc[0]) # 访问指定行的数据
print(df.loc[0:2, 'Name':'Age']) # 访问指定行和列的数据
- 过滤数据帧:
filtered_df = df[df['Age'] > 30] # 根据条件过滤数据
print(filtered_df)
- 添加和修改数据帧:
df['Salary'] = [5000, 6000, 7000] # 添加新列
df.loc[0, 'Age'] = 26 # 修改指定位置的值
- 缺失值处理:
df.dropna() # 删除包含缺失值的行
df.fillna(value) # 使用指定值填充缺失值
- 数据统计和计算:
print(df.describe()) # 对数据帧中的数值列进行统计描述
print(df.mean()) # 计算每列的平均值
print(df['Age'].sum()) # 计算指定列的总和
这些是 Pandas 数据帧的一些常见操作示例。Pandas 还提供了许多其他功能,如数据排序、数据分组、数据合并、数据透视表等。你可以参考 Pandas 官方文档或其他教程资源,以深入了解 Pandas 提供的丰富功能和操作。
5.补充(For循环)
在 Python 中,for 循环可以用于多种场景,包括但不限于以下几种常见的使用场景:
- 遍历序列:for 循环可以用于遍历字符串、列表、元组等序列类型的数据。在每次迭代中,循环变量将依次取到序列中的每个元素。例如:
fruits = ['apple', 'banana', 'orange']
for fruit in fruits:
print(fruit)
这段代码将遍历 fruits 列表中的每个水果,并将其打印出来。
- 遍历字典:for 循环也可以用于遍历字典。在每次迭代中,循环变量将依次取到字典中的每个键。可以通过字典的 items() 方法获取键值对,进而在循环中访问键和对应的值。例如:
student_scores = {'Alice': 85, 'Bob': 92, 'Charlie': 78}
for name, score in student_scores.items():
print(name, score)
这段代码将遍历 student_scores 字典中的每个学生及其对应的分数,并将其打印出来。
- 数字迭代:通过使用内置函数 range(),可以在 for 循环中进行数字迭代。range() 函数返回一个表示数字范围的迭代器,可以指定起始值、结束值和步长。例如:
for i in range(1, 6):
print(i)
这段代码将迭代打印出从 1 到 5 的整数。
- 文件处理:for 循环可以用于逐行读取文件中的内容。通过打开文件,并使用文件对象进行迭代,可以依次读取文件中的每一行。例如:
with open('file.txt', 'r') as file:
for line in file:
print(line)
这段代码将逐行读取名为 “file.txt” 的文件中的内容,并将每行内容打印出来。
这些只是 for 循环的一些常见使用场景和示例。for 循环在 Python 中非常灵活和强大,可以用于各种需要迭代处理的情况。根据具体的需求,可以灵活运用 for 循环来处理不同类型的数据和完成不同的任务。
好了,内容就到这儿了。希望能帮助到大家!