学习内容:
- 掌握python的数据类型
- 掌握python数据转置函数
学习产出:
1、数据类型
一、数字型
- 整型 --int
- 浮点型–float
- 布尔型–boolean=True、False
- 复数类型–complex =( 3-91j)
二、字符串–str
1、可用:单引号、双引号、三引号
例子:
strvar1 = '123'
strvar2 = "123,数字"
strvar3 = """
转义字符:\ + 字符
(1)把无意义的字符变的有意义
(2)把有意义的字符变的无意义
\n:换行
\r\n:换行
\t:缩进(tab,水平制表符)
\r:把\r后面的字符串直接拉到当前行行首
"""
print (strvar1)
print (strvar2)
print (strvar3)
运行结果
2、元字符串:
r + 字符串 ==> 表示不转字符,原型化输入字符串。(相当于字符串中给所有特殊意义的字符加了转义符)
例子:
strvar = r"E:\thabc_\nay"
print (strvar)
运行结果
三、列表–list
定义:列表list用[ ]标识,支持数字,字符串,也可以包含列表嵌套,创建一个列表,只要把逗号分隔的不同数据项使用方括号括起来即可
- list1 = [‘银行存款’, ‘库存现金’, ‘应收账款’]
- list2 = [666, 999, 888]
- list3 = [] #方括号里面什么都不写,代表创建一个空列表
特点:可获取,可修改,有序
listvar = [111,3,13,True,3+4j,"abc"]
print (listvar,type(listvar))
运行结果
计算:
- +:拼接
- *:重复
- [ ]:获取
- [ : ]:截取
- in:成员运算符
- not in:成员运算符
操作:
- list.append(obj):在列表末尾添加新的元素
#list1.append(‘存货’) #返回结果:[‘银行存款’,‘库存现金’, ‘应收账款’, ‘存货’] - list.insert(index, obj):将元素插入列表中指定的位置
#list2.insert(0,555) #返回结果:[555, 666, 999, 888] - list.extend(seq):在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
#list1.extend(list2) #返回结果:[‘银行存款’, ‘库存现金’, ‘应收账款’, 666, 999, 888] - list.pop([insex=-1]):移除列表汇总的一个元素(默认最后一个元素),并且返回该元素的值
#list1.pop(0) #返回结果:[‘库存现金’, ‘应收账款’] - list.remove(obj):移除列表中某个元素的第一个匹配项
#list2.remove(999) #返回结果:[666, 888] - list.reverse():反向列表中元素
#list1.reverse() #返回结果:[‘应收账款’, ‘库存现金’, ‘银行存款’] - list.sort(cmp=None,key=None,reverse=False):对原列表进行排序(只能对相同类型的元素进行排序)
#list2.sort() #返回结果:[666, 888, 999]
四、元组–tuple
定义:元组使用()定义
特点:可获取、不可修改(元组不支持赋值)、有序
tuplevar = (False,3+4j,"aaa",456)
res = tuplevar[-3]
print (res)
运行结果
注意点:加逗号才是元组,逗号是区分是否是元组的标识符,tuplevar=1,2,3也是元组。
tuplevar =(123)
print(tuplevar,type(tuplevar))
tuplevar =(123,)
print(tuplevar,type(tuplevar))
运行结果
五、集合–set
特点:无序、不可修改、自动去重(不可重复)。
setvar={"123","573","张三","李四"}
print (setvar,type(setvar))
运行结果
六、字典–dict
特点:字典是一组可变的无序的对象集合,字典中的元素是通过键(Key) : 值(Value)来保存的,一组键值对称为一个元素,其中键(Key)不可重复,必须唯一,而值(Value)是可重复的,字典会浪费较大内存,是一种使用空间换时间的数据类型
dictvar = {"a1":"123","a2":"234","b1":"345","b2":"456"}
print (dictvar,type(dictvar))
运行结果
创建方法:
1)使用 { } 创建字典
dict = {‘key’:‘value1’, ‘key2’:‘value2’, …, ‘keyn’:‘value3’}
使用{}创建dict1 = {“name”: “tom”, “age”: 28, “phone”: 15252162666}
2)通过 fromkeys() 方法创建字典
Python 中,还可以使用 dict 字典类型提供的 fromkeys() 方法创建带有默认值的字典,
具体格式为:dictname = dict.fromkeys(list,value=None)
其中,list 参数表示字典中所有键的列表(list);value 参数表示默认值,如果不写,则为空值 None。
通过 fromkeys() 方法创建字典
c = [‘name’, ‘age’, ‘weight’]
dict5 = dict.fromkeys(c)
dict6 = dict.fromkeys(c, “0”)
print(dict5) # {‘name’: None, ‘age’: None, ‘weight’: None}
print(dict6) # {‘name’: ‘0’, ‘age’: ‘0’, ‘weight’: ‘0’}
3)通过 dict() 映射函数创建字典
格式1:dict1 = dict(key1=value1, key2=value2, key3=value3)
格式2:demo = [(‘two’,2), (‘one’,1), (‘three’,3)]
dict2 = dict(demo)
格式3:
keys = [‘one’, ‘two’, ‘three’] # 还可以是字符串或元组
values = [1, 2, 3] # 还可以是字符串或元组
dict3 = dict( zip(keys, values) )
操作:
D = {‘a’ : 1, ‘b’ : 2, ‘c’ : 3}
- dict[key]:访问字典里的值
#D[‘a’] #返回结果:1 - dict[key]=:修改值
#D[‘a’]=4 #返回结果:{‘a’ : 4, ‘b’ : 2, ‘c’ : 3} - dict[key]=:添加键值对
#D[‘d’]=5 #返回结果:{‘a’:1, ‘b’ :2, ‘c’ : 3, ‘d’ :5} - del dict[key]:删除键值对
#del D[‘a’] #返回结果:{‘b’ : 2, ‘c’ : 3} - del dict:删除字典
#del D #删除整个字典后,后续脚本引用变量时会报未定义错误 - dict.keys():以列表返回所有键
#D.keys() #返回结果:dict_keys([‘a’, ‘b’, ‘c’]) - dict.values():以列表返回所有值
#D.values() #返回结果:dict.values([1, 2, 3]) - divt.items():返回所有键值对
#D.items() #返回结果:dict_items([(‘a’, 1), (‘b’, 2), (‘c’, 3)])
用途:
- 快速查找:字典提供了一种快速查找值的方式,通过键而不是位置来引用数据。这使得在大型数据集中查找和访问值变得更加高效。
- 数据建模:字典可以用于表示复杂的数据结构,如树形结构、图形结构等,其中每个节点都表示一个键值对。
- 数据处理:字典可以用于数据处理和清理任务,例如从数据集中删除重复项、过滤无关数据等。
- 数据转换:字典可以用于将数据从一种形式转换为另一种形式,例如将 CSV 文件转换为 JSON 格式。
- 缓存:字典可以用作缓存,以提高访问和处理数据的速度。
七、数据类型转换
- int(x [,base]):将x转换为一个证书,文字类和小数类字符串无法转化为正数,浮点数可以转化为整数(抹零取整)
- float(x):将x转换到一个浮点数
- str(x):将对象x转换为字符串
- list(s):将序列s转换为一个列表
- dict(d):创建一个字典,d必须是一个序列(key,value)元组
- chr(x):将一个整数转换为一个字符
- ord(x):将一个字符转换为它的整数值
nums1 = [11, 22, 33] # 定义列表
nums2 = (44, 55, 66) # 定义元组
nums3 = {77, 88, 99} # 定义集合
temp1=list(nums2)
temp2=list(nums3)
print(type(nums1))
print(type(temp1))
print(type(temp2))
print("列表转换\n")
temp1=tuple(nums1)
temp2=tuple(nums3)
print(type(temp1))
print(type(nums2))
print(type(temp2))
print("元组转换\n")
temp1=set(nums1)
temp2=set(nums2)
print(type(temp1))
print(type(temp2))
print(type(nums3))
print("集合转换\n")
列表元组转其他类型
# 列表转集合(去重)
list1 = [6,7,7,8,8,9]
set(list)
# {6,7,8,9}
# 两个列表转字典
list1 = ['key1','key2','key3']
list2 = ['1','2','3']
dict(zip(list1,list2))
# {'key1':'1','key2':'2','key3':'3'}
#嵌套列表转字典
list3=[['key1','value1'],['key2','value2'],['key3','value3']]
dict(list3)
# {'key1':'value1','key2':'value2','key3':'value3'}
字典转为其他类型
# 字典转换为字符串
dic1 = {'a':1,'b':2}
str(dic1)
#"{'a':1,'b':2}"
# 字典key和value互转
dic2 = {'a':1,'b':2,'c':3}
{value:key for key,value in a_dict.items()}
#{1:'a',2:'b',3:'c'}
字符串转为其他类型
# 字符串转列表
s = 'aabbcc'
list(s)
#['a','a','b','b','c','c']
# 字符串转元组
tuple(s)
#('a','a','b','b','c','c')
# 字符串转集合
set(s)
# {'a','b','c'}
# 字符串转字典
dic2=eval("{'name':'1jq','age':24}")
# 切分字符串
a = 'abc'
a.split('')
#['a','b','c']
八、应用场景
- 如果想要存储多个数据,但这些数据不能修改,这个时候就用元组–元组数据只支持查找
(注意:定义元组,当元组只有一个数据的时候,这个数据后面最好也添加逗号) 例子: weekdays = (“Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”) - 如果需要对数据进行更改、添加或删除操作,应该使用列表。
例子:当您要将新电话号码附加到列表时:phone=[number1,number2,…] - 当需要从键到值的映射时,请使用字典-dict。
例子:当您想要一本将姓名映射到电话号码的电话簿时:{‘John Smith’ : ‘555-1212’})。 - 如果需要唯一元素的无序集合,请使用集合-set
2、转置函数
Numpy。数组转置
NumPy是用于数据分析、科学计算和数学运算等领域的重要库。它提供了对多维数组的支持,可以处理各种复杂的数学操作。在NumPy中,ndarray是一个重要的数据类型,表示N维数组。
要将NumPy数组转置,只需要使用.T属性即可。
import numpy as np
arr = np.array([[1, 2], [3, 4], [5, 6]])
print(arr.T)
输出结果
array([[1, 3, 5],
[2, 4, 6]])
Pandas数据框转置
Pandas是一个数据处理库,支持对各种结构化数据的操作。它包括两个重要的数据结构——Series和DataFrame,前者用于处理一维数据,后者用于处理二维数据。
要将Pandas DataFrame转置,可以使用.T属性。
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
print(df.T)
输出结果
0 1 2
A 1 2 3
B 4 5 6
转置函数的重要性
数据转置函数在数据分析中很重要,因为数据通常以行的形式存储,而分析时经常需要按列进行操作。以下是使用转置函数的三种方式:
- 调整数据格式:转置函数可用于将数据在行和列之间转换。例如,使用转置函数可以将以纵向排列的数据转换为横向排列的数据。
- 分析数据关系:使用转置函数可以更轻松地分析数据之间的关系和趋势。例如,转置后,可以将数据按列分组,并计算每一列的平均值或总和。
- 网页排名:要排名网页,通常需要将数据转换为水平格式。这时,转置函数可以将数据转换为此格式,使其更容易进行分析。