python中常用的经典数据结构有哪些
时间:2023-05-13 00:34
NumPy中的数据结构,包括Ndarray、Matrix 引入NumPy包,将其命名为np。在引入NumPy包后方可使用数组数据结构 创建数组对象,在NumPy包中: array() 方法可以把序列型对象转换成数组; arange() 方法可以生成自定义终点的一堆数组; ones 生成值全为1的数组; empty() 方法会生成一个给定类型和维度且不进行数据初始化的数组; random() 生成随机数组; linspace() 生成指定起止数值和步长的一维数组,例如生成一个从1到10的元素个数为5的数组 序列型数据转化得到数组: [ 1 2 3 4 5 6 7 8 9 10 11 12] 数组可以通过 array[a:b] 从数组中提取子集,也可以在此基础上进行批量赋值操作。 一维数组索引: [ 5 6 7 8 9 10 11 12] 以下均为多维数组中的常用属性,其中,shape 可以返回对象的数据结构,例如行数与列数,除了返回一个表示数组各维度的元组,也可以通过 reshape 改变数组的结构 改变结构后的数组 append() 函数可以增加元素或者列表类型的数据,但必须注意维度需要保持一致。 增加一列后的数组 使用 delete(x,i,axis=) 方法可以删除数组对象中行或者列,第三个参数 axis 决定了删除的是行还是列,需要删除的对象可以是一个数,也可以是一个元组。 删除单行后的数组: 可以使用索引的方式进行数组数据的批量修改。 数组批量赋值 1.二维数组转置。array.T 可以得到数组对象转置后的结果 2.数组的堆叠。首先新进两个数组,之后依次使用 vstack 进行纵向堆叠和使用 hstack 进行横向堆叠 纵向堆叠后: 转换前的Ndarray是: DataFrame转化为Ndarry的结果是: 使用mat()方法可以把其他数据结构的对象转换为矩阵类型。 显示该数据结构类型: <class 'numpy.matrix'> 创建随机矩阵,在numpy中包含了许多创建特殊矩阵的方法,这里使用 empty() 方法创建一个新的数据随机的矩阵 [[ 0.00000000e+000 0.00000000e+000 0.00000000e+000] 在矩阵中有一下常用属性用于观察矩阵 矩阵每维的大小: (3, 3) 矩阵合并。c_() 方法进行连接,根据参数顺序也将决定生产矩阵的结果;r_() 方法用于列连接。 将mat2矩阵添加在原矩阵右侧 delete() 方法可以删除矩阵的指定行列,具体类似数组中的用法。 删除第一行后的结果 1.矩阵运算,在矩阵运算中,* 被重写用于矩阵乘法,dot() 则用于计算矩阵点乘 2.如果需要对应位置相乘,则需使用其它函数。 矩阵乘法结果 矩阵常用函数。矩阵也可以使用 .T 进行转置。linalg.inv() 可以用于求逆运算,若不存在逆矩阵则报错。 矩阵转置后: 求矩阵特征值(使用numpy必须是方阵) (array([24.88734753, -0.8418908 , 0.95454327]), matrix([[-0.1481723 , -0.87920199, 0.10036602], 由于结构相似,矩阵常常与列表和数组进行数据类型转换。 矩阵列表转换: Pandas中的数据结构,包括Series和DataFrame 引入Pandas包并取别名pd 首先建立一个字典,使用 Series() 方法将字典转换成序列对象,字典的key会自动成为series的index;若转换列表,则生产的序列对象会自动赋予index值。 利用字典生成的序列对象 添加索引,通过指定index为series增加索引 a 6 values 显示series中的值,index 显示索引,此外还可以按照索引值显示元素。 序列的值 append() 方法为series增加元素,index可以指定索引值。 a 6 删除Series中的元素(只能通过index来删除元素) dtype: int64 dtype: int64 序列中可以直接根据索引查找并更新元素。 a 4 序列排序。sort_values()方法可以使用series的值按照升序排序。 a 4 b 1 序列求中位数。median()方法可以直接得到序列的中位数,在此之上可以进行比较等操作。 中位数为:3.0 序列的运算,两个series之间的运算,可以加减乘除(必须保证index是一致的)。 a 8 时间序列。pandas包中的data_range()方法可以生成时间序列,便于进行数据的处理。 产生的序列是: 生成的时间序列是: 产生的时间序列是: Series转DataFrame Series转Dict 引入pandas包,创建DataFrame对象。首先创建字典,之后使用 DataFrame() 方法创建数据框对象。通过index.name给其索引命名。最后使用 to_csv 和 to_excel 方法将其保存为csv和excel文件;也可以用列表进行创建:pd.DataFrame(data,columns,index)。 显示该数据结构类型 <class 'pandas.core.frame.DataFrame'> 通过 DataFrame.name 可以返回索引值为name的整列数据,而 DataFrame.loc[i] 可以返回指定行数的全部数据。除此之外也可以使用根据时间序列查找内容。 !!!loc[ ] 按列名称 iloc[ ] 按列号 操作 获取列索引:df.cloums 获取行索引:df.index 获取值:df.value 列数据索引 使用 append() 方法增加一名同学的信息,这里根据行索引分别添加值。update() 方法可以给数据框增加列。 修改前: 使用 drop 方法删除'address'列,还可以通过修改参数删除行。除此之外通过 del 指令可以删除指定索引值的整列数据(操作一旦进行即不可回复)。 处理前的数据 数据框按列合并(效果和增加列相同) 合并前的df2 数据框按行合并(效果和增加学生信息相同) 数据框的时间序列。通过 date_range 函数生成序列并加入数据中,列如创建从2019年9月21日开始的连续4天的时间序列。使用pandas包中的 read_csv() 方法读取之前保存的学生数据,更新数据后可以看到生成的时间序列已经加入到了数据框中 id name no age gender 时间序列查询 根据时间序列索引得到的值 DataFrame转ndarray 使用()、tuple()创建元组,元组可以为空且元素类型可以不同; 若元组中仅包含一个数字,则应该添加逗号以区别运算符号:tup=(1,); 元组一旦创建就无法对其元素进行增加、删除、修改。 元组可以使用下标索引来访问元组中的值。 tup1[0]: Google 使用del方法可以删除指定的元组对象,但无法删除指定下标的元组元素。 虽然元组中的元素不允许修改,但可以对元组进行连接组合创建出一个新的元组。 len() 返回元组元素个数; max()/min() 返回元组元素中的最大、最小元素。 元组可以转换为字符串、列表……不过单个元组无法直接转换成字典 一维列表的创建。使用[]可以创建一个列表对象,列表是一种有序的集合,可以随时添加和删除其中的元素; 多维列表的创建。尽管list默认是一维的,但可以使用[]嵌套创建多维列表。 list[a:b] 返回列表中第a个至第b-1个元素的列表对象; list[::a] 返回一个从列表第一个元素开始,步长为a的列表对象; list[i] 返回列表中下标为i的元素,若i为负数,则从列表尾部从后至前访问第i个元素。 append() 可以在列表末尾增加新的项目,可以增加一个元素,也可以增加一个list对象成为多维列表。 remove() 函数可以删除指定值的元素,list.remove(i)会删除list对象中值为i的元素,若不存在则报错; pop() 函数可以删除指定下标的元素,默认为列表对象的最后一个元素,list.pop(i)将删除下标为i的元素。 list[i]=x 可以直接替换列表中指定下标的元素 reverse() 函数可以使列表倒置; len() 函数可以返回列表的元素个数; sort() 函数可以使列表元素升序排列。 列表可以便利的转换为各种数据类型;注意,单个列表无法转换为字典。 集合不会出现重复值,所有元素按照一定的顺序排列,若元素为数字则按数字大小排列,使用set()函数创建集合会自动的拆分多个字母组成的字符串 {'a', 'c', 'b'} 使用in可以判断a是否在集合中,存在为真,反之为假。 add() 函数可以在集合对象中加入新元素,若元素已存在,则无效果; 使用update表示添加(并非修改)是一个一个添加,并且按照顺序添加进集合。 {'t', 'b', 'a', 'ghk', 'c', 'y', 'u'} remove() 函数可以将集合中的元素删除,元素不存在会报错; discard() 函数可以删除集合中指定的元素,且元素不存在不报错; pop() 函数可以随机删除集合中的一个元素(在交互模式下删除最后一个元素); clear() 函数可以清空集合。 len() 函数可以查询集合的长度; copy() 可以复制集合中的元素并生成一个新的集合 len()返回集合的长度: 7 集合的运算。首先建立两个集合用于运算,在集合运算中,‘-’表示求差,‘&’表示求和,‘|’表示求并集,'^'表示两个集合的并集减去交集 求差集: {'e', 'p', 'l'} 生成一个字典和一个包含三个字典对象的字典列表。(列表中嵌套字典,students实际上是一个列表,students中的元素是字典) 显示该数据结构类型 <class 'dict'> 使用zip方法创建字典。zip() 方法可以返回元组组成的列表,可以用于快速构建字典。 {'a': '1', 'b': '2', 'c': '3'} 查找第一个学生的学号(显示出第一个字典元素id键的值);此外还可以使用get(key,default=None)方法获取指定键的值。 常规查询: 001 添加一名学生的信息(增加行,其实是增加列表中一个元素),之后再添加一个学生信息科目(增加列,其实就是增加字典中一个键值对) 添加一个字典对象后: [{'name': 'n1', 'id': '001'}, {'name': 'n2', 'id': '002'}, {'name': 'n3', 'id': '003'}, {'name': 'n4', 'id': '004'}] 使用del删除一名学生的信息(删除行,其实就是删除列表中的一个元素)。再使用pop删除第一个学生的学号(删除某一行中的列,其实是删除字典中的一个键值对) 删除列表中的一个字典对象后 删除所有学生的学号(删除某一列,其实就是删除所有字典中的一个键值对) [{'name': 'n1'}, {'name': 'n2', 'id': '002'}, {'name': 'n3', 'id': '003'}] 添加(更改)第一个学生的学号(在列表的第一个字典元素中增加/更改键值对) 更新后的字典 字典的键和值可以被单独各自转换为list 字典值转List: ['1', '2', '3'] 以上就是python中常用的经典数据结构有哪些的详细内容,更多请关注Gxl网其它相关文章!NumPy包中的数据结构
数组(Ndarray)
创建Ndarray
import numpy as np
import numpy as nparray001 = np.array([1,2,3,4,5,6,7,8,9,10,11,12])a2 = np.arange(5)a3 = np.ones((2,2))a4 = np.empty((2,2))a5 = np.random.rand(4,2)a6 = np.linspace(10,30,5)print('
序列型数据转化得到数组:',array001, '
显示该数据结构类型:',type(array001), '
arange()函数创建的数组:',a2, '
ones()函数创建的全1数组:
',a3, '
empty()函数创建的未赋值的数组:
',a4, '
random()函数创建的随机数组:
',a5, '
linespace()函数创建的随机数组:',a6)
显示该数据结构类型: <class 'numpy.ndarray'>
arange()函数创建的数组: [0 1 2 3 4]
ones()函数创建的全1数组:
[[1. 1.]
[1. 1.]]
empty()函数创建的未赋值的数组:
[[0. 0.]
[0. 0.]]
random()函数创建的随机数组:
[[0.39902074 0.63298526]
[0.09231821 0.23007193]
[0.09899536 0.83000881]
[0.27760961 0.65135898]]
linespace()函数创建的随机数组: [10. 15. 20. 25. 30.]Ndarray查询操作
array002 = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])print('
一维数组索引:',array001[4:], '
二维数组索引:',array002[1:3,2:4]) #2-3行、3-4列
二维数组索引: [[ 7 8] [11 12]]array004 = array001.reshape(3,-1)print('
改变结构后的数组
',array004, '
数组各个维度:',array004.shape, '
数组结构类型:',array004.dtype, '
数组数据个数:',array004.size, '
数组数据类型字节数:',array004.itemsize, '
数组维度:',array004.ndim)
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
数组各个维度: (3, 4)
数组结构类型: int32
数组数据个数: 12
数组数据类型字节数: 4
数组维度: 2Ndarray增加操作
array003 = np.append(array002,[[1],[2],[3]],axis = 1) # axis = 1 按列方向添加print('
增加一列后的数组
',array003)
[[ 1 2 3 4 1]
[ 5 6 7 8 2]
[ 9 10 11 12 3]]Ndarray 删除操作
array003 = array002.Tprint('删除单行后的数组:
',np.delete(array003,1,axis=0)) # axis=0删除行array003 = array002.Tprint('批量删除后的数组:
',np.delete(array003,(1,3),0))array003 = array002.Tprint('删除单列后的数组
',np.delete(array003,1,1)) # axis=1删除列
[[ 1 5 9]
[ 3 7 11]
[ 4 8 12]]
批量删除后的数组:
[[ 1 5 9]
[ 3 7 11]]
删除单列后的数组
[[ 1 9]
[ 2 10]
[ 3 11]
[ 4 12]]Ndarray修改
array002[1:2]=0print('数组批量赋值
',array002)array003 = array002.Tarray003[1][1] = 100print('修改数值后的数组
',array003)
[[ 1 2 3 4]
[ 0 0 0 0]
[ 9 10 11 12]]
修改数值后的数组
[[ 1 0 9]
[ 2 100 10]
[ 3 0 11]
[ 4 0 12]]Ndarray其它操作
arr1 = np.array([1,2,3])arr2 = np.array([4,5,6])print('纵向堆叠后:
',np.vstack((arr1,arr2)), '
横向堆叠后:
',np.hstack((arr1,arr2)))
[[1 2 3]
[4 5 6]]
横向堆叠后:
[1 2 3 4 5 6]Ndarray转化成其它数据结构
arr3 = np.array([[1,2,3],[4,5,6]])print('转换前的Ndarray是:
',arr3)import pandas as pddfFromNdarray = pd.DataFrame(arr3)print('Ndarray转化为DataFrame的结果是:
',dfFromNdarray) #带行号和列号
[[1 2 3]
[4 5 6]]
Ndarray转化为DataFrame的结果是:
0 1 2
0 1 2 3
1 4 5 6arrFromDataFrame = dfFromNdarray.valuesprint('DataFrame转化为Ndarry的结果是:
',arrFromDataFrame) #只提取value值
[[1 2 3]
[4 5 6]]矩阵(Matrix)
创建Matrix
array1 = [1,2,3]array2 = [6,7,8]array3 = [11,12,17]matrix = np.mat([array1,array2,array3])print('显示该数据结构类型:',type(matrix))print(matrix)
[[ 1 2 3]
[ 6 7 8]
[11 12 17]]matrix1 = np.empty((3,3))print(matrix1)
[ 0.00000000e+000 0.00000000e+000 2.27270197e-321]
[ 9.30350261e+199 1.10343781e-312 -3.38460783e+125]]Matrix查询操作
print('矩阵每维的大小:',matrix.shape)print('矩阵所有数据的个数:',matrix.size)print('矩阵每个数据的类型:',matrix.dtype)
矩阵所有数据的个数: 9
矩阵每个数据的类型: int32Matrix增加操作
mat1 = np.mat([[1,2],[3,4]])mat2 = np.mat([4,5])matrix_r = np.c_[mat1,mat2.T]print('将mat2矩阵添加在原矩阵右侧
',matrix_r)matrix_l = np.c_[mat2.T,mat1]print('将mat2矩阵添加在原矩阵左侧
',matrix_l)matrix_u = np.r_[np.mat([array1]),matrix]print('在原矩阵上方连接矩阵
',matrix_u)
[[1 2 4]
[3 4 5]]
将mat2矩阵添加在原矩阵左侧
[[4 1 2]
[5 3 4]]
在原矩阵上方连接矩阵
[[ 1 2 3]
[ 1 2 3]
[ 6 7 8]
[11 12 17]]Matrix删除操作
matrix2 = np.delete(matrix,1,axis = 1)print('删除第一行后的结果
',matrix2)matrix3 = np.delete(matrix,1,axis=0)print('删除第一列后的结果
',matrix3)
[[ 1 3]
[ 6 8]
[11 17]]
删除第一列后的结果
[[ 1 2 3]
[11 12 17]]Matrix特殊操作
mat3 = np.mat([[5,6],[7,8]])matrix4 = mat1*mat3print('矩阵乘法结果
',matrix4)matrix5 = mat1.dot(mat3)print('矩阵点乘结果
',matrix5)
[[19 22]
[43 50]]
矩阵点乘结果
[[19 22]
[43 50]]matrix6 = matrix.Tmatrix7 = np.linalg.inv(mat1)print('
矩阵转置后:
',matrix6, '
矩阵求逆后:
',matrix7)
[[ 1 6 11]
[ 2 7 12]
[ 3 8 17]]
矩阵求逆后:
[[-2. 1. ]
[ 1.5 -0.5]]matrix8 = np.linalg.eig(matrix)print(matrix8)
[-0.4447565 , 0.3814255 , -0.82855015],
[-0.88331004, 0.28551435, 0.550846 ]]))Matrix转换为其它数据结构
print('矩阵列表转换:
',matrix.tolist(), '
矩阵转数组:
',np.array(matrix))
[[1, 2, 3], [6, 7, 8], [11, 12, 17]]
矩阵转数组:
[[ 1 2 3]
[ 6 7 8]
[11 12 17]]序列(Series)
创建Series
import pandas as pd
sdata = {'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000}s0 = pd.Series(sdata)print('利用字典生成的序列对象
',s0)print('显示该数据结构类型:',type(s0))s1 = pd.Series([6,1,2,9])print('利用列表生成的序列对象
',s1)
Ohio 35000
Texas 71000
Oregon 16000
Utah 5000
dtype: int64
显示该数据结构类型: <class 'pandas.core.series.Series'>
利用列表生成的序列对象
0 6
1 1
2 2
3 9
dtype: int64s1 = pd.Series([6,1,2,9],index=['a','b','c','d'])print(s1)
b 1
c 2
d 9
dtype: int64Series查询操作
print('序列的值
',s0.values)print('序列的索引
',s0.index)print('按照下标查找序列',s0[2])print('按照索引值查找元素',s0['Utah'])print('按照下标批量查找序列
',s0[:2])print('按照索引值批量查找元素
',s0[['Ohio','Oregon']])
[35000 71000 16000 5000]
序列的索引
Index(['Ohio', 'Texas', 'Oregon', 'Utah'], dtype='object')
按照下标查找序列 16000
按照索引值查找元素 5000
按照下标批量查找序列
Ohio 35000
Texas 71000
dtype: int64
按照索引值批量查找元素
Ohio 35000
Oregon 16000
dtype: int64Series增加操作
s2 = s1.append(pd.Series([12],index=['e']))print(s2)
b 1
c 2
d 9
e 12
dtype: int64Series删除操作
s3 = s1.drop('a')print(s3)
b 1
c 2
d 9Series修改操作
s1['a'] = 4 #将s1中index为a的元素更改为4print(s1)
b 1
c 2
d 9
dtype: int64Series特殊操作
print(s1.sort_values)
c 2
d 9
dtype: int64>print(s1)print('中位数为:'+str(s1.median()))print('大于序列中位数的数
',s1[s1>s1.median()])
大于序列中位数的数
a 4
d 9
dtype: int64s2 = pd.Series([4,3,5,8],index=['a','b','c','d'])print(s2+s1)
b 4
c 7
d 17
dtype: int64s3 = pd.Series([100,150,200])print('产生的序列是:
',s3)idx = pd.date_range(start='2019-9',freq='M',periods=3)print('
生成的时间序列是:
',idx)s3.index = idxprint('
产生的时间序列是:
',s3)
0 100
1 150
2 200
dtype: int64
DatetimeIndex(['2019-09-30', '2019-10-31', '2019-11-30'], dtype='datetime64[ns]', freq='M')
2019-09-30 100
2019-10-31 150
2019-11-30 200
Freq: M, dtype: int64Series转换为其它数据结构
dfFromSeries = s2.to_frame()print('Series转DataFrame
',dfFromSeries)print('显示数据结构类型:',type(dfFromSeries))
0
a 4
b 3
c 5
d 8
显示数据结构类型: <class 'pandas.core.frame.DataFrame'>dictFromSeries = s2.to_dict()print('Series转Dict
',dictFromSeries)print('显示数据结构类型:',type(dictFromSeries))
{'a': 4, 'b': 3, 'c': 5, 'd': 8}
显示数据结构类型: <class 'dict'>数据框(DataFrame)
创建DataFrame
dic1 = {'name':['Tom','Lily','Cindy','Petter'],'no':['001','002','003','004'],'age':[16,16,15,16],'gender':['m','f','f','m']}df1 = pd.DataFrame(dic1)print('显示该数据结构类型',type(df1))df1.index.name = 'id'#df1.to_csv('students.csv')#df1.to_excel('students.xls') !!!会报错print(df1)
name no age gender
id
0 Tom 001 16 m
1 Lily 002 16 f
2 Cindy 003 15 f
3 Petter 004 16 mDataFrame 查询操作
column = df1.norow = df1.loc[3]print('
列数据索引
',column,'
行数据索引
',row)
id
0 001
1 002
2 003
3 004
Name: no, dtype: object
行数据索引
name Petter
no 004
age 16
gender m
Name: 3, dtype: objectDataFrame增加操作
print('修改前:
',df1)df2 = df1.append([{'name':'Stark','no':'005','age':15,'gender':'m'}],ignore_index=True) #接着索引号为4,不写的话就是0print('增加行:
',df2)df2['new_Col'] = [1,2,3,4,5]print('增加列:
',df2)
name no age gender
id
0 Tom 001 16 m
1 Lily 002 16 f
2 Cindy 003 15 f
3 Petter 004 16 m
增加行:
name no age gender
0 Tom 001 16 m
1 Lily 002 16 f
2 Cindy 003 15 f
3 Petter 004 16 m
4 Stark 005 15 m
增加列:
name no age gender new_Col
0 Tom 001 16 m 1
1 Lily 002 16 f 2
2 Cindy 003 15 f 3
3 Petter 004 16 m 4
4 Stark 005 15 m 5DataFrame删除操作
df3 = df1.copy()print('处理前的数据
',df1)df3b = df3.drop(['name'],axis=1)print('删除列后的数据框
',df3b)df3c = df3.drop([2])print('删除行后的数据框
',df3c)
name no age gender
id
0 Tom 001 16 m
1 Lily 002 16 f
2 Cindy 003 15 f
3 Petter 004 16 m
删除列后的数据框
no age gender
id
0 001 16 m
1 002 16 f
2 003 15 f
3 004 16 m
删除行后的数据框
name no age gender
id
0 Tom 001 16 m
1 Lily 002 16 f
3 Petter 004 16 mDataFrame修改操作
df4 = pd.DataFrame({'address':['school','home','school','school','home']})df5 = pd.concat([df2,df4],axis=1)print('合并前的df2
',df2)print('合并前的df4
',df4)print('合并后的df5
',df5)
name no age gender new_Col
0 Tom 001 16 m 1
1 Lily 002 16 f 2
2 Cindy 003 15 f 3
3 Petter 004 16 m 4
4 Stark 005 15 m 5
合并前的df4
address
0 school
1 home
2 school
3 school
4 home
合并后的df5
name no age gender new_Col address
0 Tom 001 16 m 1 school
1 Lily 002 16 f 2 home
2 Cindy 003 15 f 3 school
3 Petter 004 16 m 4 school
4 Stark 005 15 m 5 homedf6 = pd.DataFrame({'name':['Tony'],'no':['005'],'age':[16],'gender':['m']})df7 = pd.concat([df1,df6],axis=0)print('合并前的df1
',df1)print('合并前的df6
',df6)print('合并后的df7
',df7)
合并前的df1 name no age genderid 0 Tom 001 16 m1 Lily 002 16 f2 Cindy 003 15 f3 Petter 004 16 m合并前的df6 name no age gender0 Tony 005 16 m合并后的df7 name no age gender0 Tom 001 16 m1 Lily 002 16 f2 Cindy 003 15 f3 Petter 004 16 m0 Tony 005 16 m
DataFrame 特殊操作
i1 = pd.date_range('2019/9/21',periods=4,freq='7D')df10 = pd.read_csv('students.csv')df10.index = i1print(df10)
2019-09-21 0 Tom 1 16 m
2019-09-28 1 Lily 2 16 f
2019-10-05 2 Cindy 3 15 f
2019-10-12 3 Petter 4 16 mprint('
根据时间序列索引得到的值
',df10.loc['2019-09-21':'2019-09-30',['gender','age','name']])
gender age name
2019-09-21 m 16 Tom
2019-09-28 f 16 LilyDataFrame转换为其它数据结构
print('DataFrame转ndarray
',df10.values, '
DataFrame转series
',df10['gender'])
[[0 'Tom' 1 16 'm']
[1 'Lily' 2 16 'f']
[2 'Cindy' 3 15 'f']
[3 'Petter' 4 16 'm']]
DataFrame转series
2019-09-21 m
2019-09-28 f
2019-10-05 f
2019-10-12 m
Freq: 7D, Name: gender, dtype: objectpython原生数据结构
元组(Tuple)
Tuple查询操作
tup1=('Google','Runoob',1997,2000)tup2=(1,) #创建单个数字元组print("tup1[0]:",tup1[0]) #访问元组中第一各元素print("tup2[1:5]:",tup2[1:5])
tup2[1:5]: ()Tuple整体删除操作
Tuple连接和复制
tup3=tup1+tup2tup4=tup2*3 #复制三份
Tuple其它操作
Tulpe转换为其它数据结构(举例)
print("
元组转列表:
",list(tup1), "
元组转字符串:
",tup1.__str__())
列表(List)
创建列表
List查询操作
List增加操作
List删除操作
List修改操作
List其它操作
List转换为其它数据结构
集合(Set)
创建Set
myset = set('aabc') #使用set()函数创建集合会自动的拆分多个字母组成的字符串print(myset)myset1 = set(('hello','world'))print(myset1)
{'hello', 'world'}Set 查询操作
'a' in myset
Set 增加操作
myset.add('ghk')myset.update('tyu') #一个一个元素添加print(myset)
Set删除操作
Set其它操作
copy_myset=myset.copy()print('
len()返回集合的长度:',len(myset), '
copy()生成的集合:',copy_myset)
copy()生成的集合: {'a', 'c', 'u', 't', 'ghk', 'b', 'y'}a = set('apple')b = set('banana')print ('
求差集:',a-b, '
求并集:',a|b, '
求交集:',a&b, '
求各自独特的:',a^b)
求并集: {'p', 'n', 'l', 'a', 'b', 'e'}
求交集: {'a'}
求各自独特的: {'n', 'p', 'l', 'b', 'e'}字典(Dictionary)
创建Dict
dict1={"ID":"L100","Name":"COCO"}students = [{'name':'n1','id':'001'},{'name':'n2','id':'002'},{'name':'n3','id':'003'}]print("显示该数据结构类型",type(dict1))print(dict1)
{'ID': 'L100', 'Name': 'COCO'}demo_dict = dict(zip('abc','123'))print(demo_dict)
Dict查询操作
print('常规查询:',students[0]['id'])print('根据键查询:',students[0].get('id'))
根据键查询: 001Dict增加操作
students.append({'name':'n4','id':'004'})print('添加一个字典对象后:',students)students[0]['school']='school1'students[1]['school']='school2'students[2]['school']='school2'print('增加键值对后的字典:',students)
增加键值对后的字典: [{'name': 'n1', 'id': '001', 'school': 'school1'}, {'name': 'n2', 'id': '002', 'school': 'school2'}, {'name': 'n3', 'id': '003', 'school': 'school2'}, {'name': 'n4', 'id': '004'}]Dict删除操作
del students[3] #删除第4行(下标为3)print('删除列表中的一个字典对象后:
',students)students[0].pop('id')print('删除一个键值对后:
',students)
[{'name': 'n1', 'id': '001', 'school': 'school1'}, {'name': 'n2', 'id': '002', 'school': 'school2'}, {'name': 'n3', 'id': '003', 'school': 'school2'}]
删除一个键值对后
[{'name': 'n1', 'school': 'school1'}, {'name': 'n2', 'id': '002', 'school': 'school2'}, {'name': 'n3', 'id': '003', 'school': 'school2'}]for i in range(0,len(students)): students[i].pop('school')print(students)
Dict修改操作
students[0].update({'id':'001'})print('
更新后的字典
',students)
[{'name': 'n1', 'id': '001'}, {'name': 'n2', 'id': '002'}, {'name': 'n3', 'id': '003'}]Dict转换为其它数据结构
print("字典值转List:",list(demo_dict.values()))print("字典键转List:",list(demo_dict.keys()))
字典键转List: ['a', 'b', 'c']