python基础
一、数据分析常用python库
1、NumPy
Numberical Python,NumPy是python数值计算的基石。提供了多种数据结构、算法及接口。NumPy主要有两个方面,一个是快速处理数组数据的能力,另一个是作为在算法和库之间数据传递的数据容器。
2、pandas
Python data analysis,pandas提供了高级数据结构和函数,具有强大的数据分析处理能力。它主要有两个对象:DataFrame,用于实现表格化、面向列、使用行列标签的数据结构;Series,一种一维标签数组对象。
3、matplotlib
matplotlib是用于制图及二维数据可视化的python库。
二、数据结构
1、元组(tuple)
元组是一种固定长度、不可变的python对象序列,其符号为()
tup = (1, 2, 3)
使用**tuple()**可以将任意序列或者迭代器转换为元组
In: tuple([1, 2, 3])
Out: (1 ,2 ,3)
In: tuple('abcd')
Out: ('a' ,'b' ,'c', 'd')
元组的元素跟列表一样,可以使用[]获取,序列索引从0开始
In: tup = (1, 2, 3)
In: tup[0]
Out: 1
In: tup[1]
Out: 2
元组拆包
In: tup = (1, 3, 6)
In: a, b, c = tup
In: a
Out: 1
In: c
Out: 6
变量交换
In: a = 1
In: b = 2
In: a, b = b, a
In: a
Out: 2
In: b
Out: 1
元组的方法
tuple.count():用于计算元组中某值出现的次数
In: tup = (1, 1, 2, 3)
In: tup.count(1)
Out: 2
2、列表(list)
列表与元组不同的地方就是列表是可变的,列表长度可变,内容可修改,其符号也为[]
In: tmp_list = [1, 2, 'bar', None, [1, 2, 3]]
# 列表索引从0到len(tmp_list)-1
In: tmp_list[0]
Out: 1
In: tmp_list[4]
Out: [1, 2, 3]
## 切片[start:stop],包左不包右
In: tmp_list[0:len(tmp_list)-1]
Out: [1, 2, 'bar', None]
In: tmp_list[0:len(tmp_list)]
Out: [1, 2, 'bar', None, [1, 2, 3]]
# 列表边上的位置序列在切片的时候可省略
In: tmp_list[:2]
Out: [1, 2]
In: tmp_list[1:]
Out: [2, 'bar', None, [1, 2, 3]]
In: tmp_list[:]
Out: [1, 2, 'bar', None, [1, 2, 3]]
In: tmp_list[-1:]
Out: [1, 2, 'bar', None, [1, 2, 3]]
In: tmp_list[::]
Out: [1, 2, 'bar', None, [1, 2, 3]]
# 列表取反[::step], ::后面step表示步进值,每隔多少数取一个值
In: tmp_list[::-1]
Out: [[1, 2, 3], None, 'bar', 2, 1]
# 列表是可修改的
In: tmp_list[0] = 'hello'
In: tmp_list
Out: ['hello', 2, 'bar', None, [1, 2, 3]]
列表索引
可以使用**list()**将迭代器或者生成器转换为列表
In: list(range(0, 4))
Out: [0, 1, 2, 3]
In: list((1, 2, 3))
Out: [1, 2, 3]
列表的方法
list.append(value):将元素(value)添加到列表尾部
list.insert(index, value): 根据索引值(index)将元素(value)插在列表的某个位置
list.pop(index): 根据索引值(index)将列表元素移除
list.remove(value): 直接移除某元素(value)
list.sort():对列表进行排序
注意:此处的list仅象征代表列表,变量不能为list,因为list是一个关键字,关键字都不能作为变量命名
# append()
In: tmp = [1]
In: tmp.append('2')
In: tmp
Out: [1, '2']
# insert()
In: tmp = [1, 2, 3, 4]
In: tmp.insert(2, 'a')
In: tmp
Out: [1, 2, 'a', 3, 4]
# pop()
In: tmp.pop(0)
Out: 1
In: tmp
Out: [2, 'a', 3, 4]
# sort()
In: [1, 7, 8, 2].sort()
Out: [1, 2, 7, 8]
# key二级排序用于生成排序值
In: ['adsad', 'hi', 'a'].sort(key=len)
Out: ['a', 'hi', 'adsad']
二分搜索(已排序列表)
bisect.bisect会找到元素应当被插入的位置,并保持序列排序;
bisect.insort将元素插到相应的位置
内建序列函数
enumerate():
遍历列表,返回(index,value)元组
In: for index, value in enumerate(['this', 'here', 'there']):
print(index, value)
Out: 0 this
1 here
2 there
sorted():
sorted函数返回一个任意序列元素新建的已排序列表
sorted(list)
注意:sorted是一个函数,sort是列表的一个方法
zip():
zip()将列表、元组或其他序列元素配对,新建一个元组构成的列表。可以处理任意长度序列,生成的列表长度由最短序列决定。
In: list1 = ['a', 'b', 'c']
In: list2 = ['ni', 'hao', 'a']
In: print(list(zip(list1, list2)))
Out: [('a', 'ni'), ('b', 'hao'), ('c', 'a')]
**‘拆分’**序列
将行的列表转换为列的列表
In: tmp = [('n', 'h'), ('i', 'ao')]
In: first_word, last_word = zip(*tmp)
In: first_word
Out: ('n', 'i')
In: last_word
Out: ('h', 'ao')
reversed()
reversed讲序列的元素倒序排列,是一个生成器
In: list(reversed(range(3)))
Out: [2, 1, 0]