用python做数据处理的过程中,往往因为一个很小的点折腾半天,下次再遇上,又来一次,归根结底,基础没打好。
另外,以前数据处理用的R,Python与R对数据的操作差不多,但方式存在诸多差异,容易混淆,接下来会做一次系统的python梳理。
本次梳理来源:Python3 基本数据类型 | 菜鸟教程www.runoob.com
python中有6个标准数据类型:数字、字符串、列表、元祖、集合、字典。
Python3 的六个标准数据类型中:
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组)。
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
不可变的意思在于,在对象有明确的值以后,不能在对对象赋值。
数字Number
python支持int整型、float浮点型、bool布尔型、complex复数。
等号(=)用来给变量赋值。
a = 3
b = 3.0
c = True
d = 1+2j
print(a,b,c,d)
输出结果:
3 3.0 True (1+2j)
也可以同时对多个对象赋值:
a,b,c,d = 3,3.0,True,1+2j
内置的 type() 函数可以用来查询变量所指的对象类型。
print(type(a),type(b),type(c),type(d))
输出为:
当指定一个值时,Number 对象就会被创建,也可以通过del删除对象应用。
b
3.0
del b
b
Traceback (most recent call last):
File "", line 1, in
NameError: name 'b' is not defined
在使用del语句后,提示对象未被定义。
字符串String
Python中的字符串用单引号
或双引号
括起来,同时使用反斜杠 \
转义特殊字符。
索引值以 0 为开始值,-1 为从末尾的开始位置。
str = "I love wangxinli"
print(len(str))#输出字符串的长度
print(str)#输出完整字符串
print(str[0:6])#输出前六个字符
print(str[-1])#输出倒数第一个字符
print(str[-5:-1])#输出倒数第五个到第倒数第二个字符
print(str[5:])#输出从第6个开始的后的所有字符
输出为:
16
I love wangxinli
I love
i
xinl
e wangxinli
Python 使用反斜杠(\)转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串,也可以使用双斜线(\\):
print("app\le")
print("app\nle")
print(r"app\nle")
print("app\\nle")
输出为:
app\le
app
le
app\nle
app\nle
字符串可以用
运算符连接在一起,用
运算符重复,后面加上数字。
print(str+"o ye")
print(str*3)
输出为:
I love wangxinlio ye
I love wangxinliI love wangxinliI love wangxinli
Python 没有单独的字符类型,一个字符就是长度为1的字符串。
Python 字符串不能被改变。向一个索引位置赋值,比如str[0] = 'm'会导致错误。
str[0] = 'm'
Traceback (most recent call last):
File "", line 1, in
TypeError: 'str' object does not support item assignment
Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
列表List
列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
列表是写在方括号 [] 之间、用逗号分隔开的元素列表。
和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
截取格式为:变量[头下标:尾下标],索引值以 0 为开始值,-1 为从末尾的开始位置。
list = ["abv",98,37,True,9.238,"dafei"]
listplus = ["a",3,4]
print(len(list))#输出列表元素的个数
print(list[1])#输出第二个元素
print(list[0:3])#输出第一个到第三个元素
print(list[0:])#输出所有的元素
print(list[2:-2])#输出第三个到倒数第三个
print(list+listplus)#两个列表相加
print(list*2)#列表复制
输出为:
6
98
['abv', 98, 37]
['abv', 98, 37, True, 9.238, 'dafei']
[37, True]
['abv', 98, 37, True, 9.238, 'dafei', 'a', 3, 4]
['abv', 98, 37, True, 9.238, 'dafei', 'abv', 98, 37, True, 9.238, 'dafei']
与字符串不一样,列表中的元素是可以改变的。
list[1]=2
print(list)
list[0:2]=[55,66]
print(list)
list[0:2]=[]
print(list)
输出为:
['abv', 2, 37, True, 9.238, 'dafei']
[55, 66, 37, True, 9.238, 'dafei']
[37, True, 9.238, 'dafei']
元祖Tuple
元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号()里,元素之间用逗号隔开。
元祖中的元素也可以各不相同。
tuple = ("jkl",78,999,"wang","liyan","3.14")
print(tuple)
print(tuple[2])
输出为:
('jkl', 78, 999, 'wang', 'liyan', '3.14')
999
同样试图改变元祖元素的值,会报错哦。
tuple[0]=0
Traceback (most recent call last):
File "", line 1, in
TypeError: 'tuple' object does not support item assignment
元祖的切片与列表类似,略过。
集合set
集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。
基本功能是进行成员关系测试和删除重复元素。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
set = {"34","abc",89,23,"liyan","wangxinli"}
if 89 in set:
print("Yes,it is true")
else :
print("o ye")
输出:
Yes,it is true
set可以进行集合操作
a = set("abhdingkeld")
d = set("jdhynfgdhf")
print(a)
print(a - d) # a 和 b 的差集
print(a | d) # a 和 b 的并集
print(a & d) # a 和 b 的交集
print(a ^ d) # a 和 b 中不同时存在的元素
输出为:
{'g', 'n', 'h', 'a', 'd', 'l', 'b', 'k', 'e', 'i'}
{'e', 'a', 'b', 'k', 'l', 'i'}
{'j', 'g', 'n', 'h', 'y', 'f', 'a', 'd', 'l', 'b', 'k', 'e', 'i'}
{'d', 'g', 'n', 'h'}
{'j', 'e', 'y', 'f', 'a', 'b', 'k', 'l', 'i'}
字符串也可以进行相应的操作
b = {"34","abc",89,23,"liyan","wangxinli"}
c = {89,23,"liyan"}
print(b-c)
输出为:
{'abc', 'wangxinli', '34'}
字典Dictionary
字典(dictionary)是Python中另一个非常有用的内置数据类型。
列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。
键(key)必须使用不可变类型。
在同一个字典中,键(key)必须是唯一的。
dictionary = {}
dictionary["one"] = 2
dictionary["two"] = "wangxinli"
dictionary["three"] = "liyan"
dictionary["four"] = "ove"
dictionary["five"] = "L"
print(dictionary)
dictionary["two"] = "345"#更改key值为"two" 的值
print(dictionary.keys())#输出所有的键值
print(dictionary.values())#输出所有值
输出为:
{'one': 2, 'two': 'wangxinli', 'three': 'liyan', 'four': 'ove', 'five': 'L'}
dict_keys(['one', 'two', 'three', 'four', 'five'])
dict_values([2, '345', 'liyan', 'ove', 'L'])
for函数对字典进行遍历
for keys in dictionary:
a = dictionary[keys]
print("the %s is %s"%(keys,a))
输出为:
the one is 2
the two is wangxinli
the three is liyan
the four is ove
the five is L
另一种实现方法,使用items()函数,输出一致。
for keys_1 ,a_1 in dictionary.items():
print("the %s is %s"%(keys_1,a_1))
Python数据类型转换
int(x, base=10)将x转换为整数型,默认为十进制
float(x)将x转化为浮点型
str(x)将x转化为字符型
tuple(s)将序列s转换为元祖
list(s)将序列 s 转换为一个列表
set(s)转换为可变集合
dict(d)创建一个字典。d 必须是一个序列 (key,value)元组
最后,常用的将列表转化为Dataframe。
a =[1,2,3]
b = [3,4,6]
c = pd.DataFrame([a,b],columns = ["one","two","three"])
print(c)
输出为:
one two three
0 1 2 3
1 3 4 6
可以看到,a和b均变成了行,预期效果是要让a和b变成列,可以有如下操作
dict_1 = {}
dict_1["one"] =a
dict_1["two"] = b
pd.DataFrame(dict_1)
输出为:
one two
0 1 3
1 2 4
2 3 6
print 函数用法总结
print输出变量比较简单,这里主要介绍一些稍微复杂的用法。
str = "the length of (%s) is %d" %('runoob',len('runoob'))
print(str)
输出为:
the length of (runoob) is 6