利用python进行数据分析学习笔记(三)

内建数据结构、函数及文件

后续笔记内容以书本的内容+自身理解的知识进行注释标注记录

tuple 元组

tup = 1, 2, 3
# 逗号分离组成的tuple
tuple('string')
# tuple
a, b, c = tup
# 分别拆包 a = 1, b = 2, c= 3
a, b = b, a
#交换变量
values = 1, 2, 3, 4, 5
a, b, *rest = values
# *rest 截取剩下的元素 *_ 同

list 列表

list的属性、方法
添加、删除元素

list.append('red') 
list.insert(1, 'red')
list.pop(2)
list.remove('red')
# append 在尾部添加值,insert在特定位置插入值
# pop 移除特定位置元素,并返回该元素, remove  删除第一个符合的值
list.extend()
# extend 添加多个元素 extend([])

排序 sort

list.sort()   #在原数据上执行
list.sorted() # 直接返回复制数据
# 排序

list.sort(key=len)
# 根据字符串长度排序

import bisect
c = [1, 2, 2, 2, 3, 4, 7]
bisect.bisect(c, 2)
# bisect.bisect返回 值应当被插入的 位置
bisect.insort(c, 6)
# bisect.insort将元素插入相应的位置
c
# bisect 函数不会检查列表是否排序, 可能出现错误

切片

# seq 切片
seq =     [1, 2, 3, 4, 5, 6, 7, 8]
对应的位置  0, 1, 2, 3, 4, 5, 6, 7 
python 位置从0开始
seq[3:4] = [9, 9]
seq
# 切片seq[3;4] 赋值[9, 9], 切片包含位置 3, 不含 位置 4
seq[:5], seq[3:], seq[-4:], seq[-6:-2]

seq[::2]
# 每隔2个数取一个值
seq[::-1]
# 翻转 逆取

重点方法 enimerate( )

enumerate (i, value) 
# i是元素的索引 value是元素的值 构建字典

some_list = ['foo', 'bar', 'baz']
mapping = {}
for i, v in enumerate(some_list):
    mapping[v] = i
    # v 是值'foo', i 是对应的序号

mapping 

zip( )

zip 
# 将list,tuple或其他序列的元素配对,新建一个tuple构成的list

seq1 = ['one', 'two', 'three']
seq2 = ['1', '2', '3']
seq3 = [True, False]
list(zip(seq1,seq2,seq3))
# zip 配对多个列表, 取决于最短的序列seq3

enumerate(zip())

for i, (a, b) in enumerate(zip(seq1, seq2)):
    print('{0}: {1}, {2}'.format(i, a, b))
# enumerate生成 zip(seq1, seq2)元组的字典,最后 .format()进行输出

zip(*tuple)

pitchers = [('one', '1'), ('two', '2'), ('three', '3')]
# tuple组成的list
first_name, second_name = zip(*pitchers)
# zip(*pitchers)拆分,第一个元素、第二个元素
first_name, second_name
#tuple 组成的 tuple

list(reversed(range(10)))
# reversed 将序列的元素倒序排列

字典 dic

d1= {}
d1[7] = 'an 7'
# 添加 key 7 : value 值
d1[7]
# 根据key 进行查询

刪除字典对应的键

del d1[7]
# del 删除 key
d1.pop(7)
# pop 删除 key 并返回 key 对应的 value 

d1.keys()
# d1 的 key
d1,values()
# d1 的 value

合并dic

d1.update({7: 'siven', 8: 'eight'})
# 字典合并到 d1, 相同的 key 会被覆盖 key 7
d1

构建dic

mapping = dict(zip(range(5), reversed(range(5))))
# dict 构建字典
mapping

dict.get()方法

dict.get(key, default_value)
# 字典中有key,去对应的value , else key不在,取 默认值default_value
d1.get(7, 10)
# key 7 在字典中
d1.get(9, 10)
# key 9 不在字典d1

书本例子讲解(首字母分类)

#首字母分类
words = ['apple', 'bat', 'bar', 'atom', 'book']
by_letter = {}
for word in words:
    letter = word[0]   # 取每个单词的首字母 letter
    if letter not in by_letter:   # 如果首字母不在字典by_letter中
        by_letter[letter] = [word]   # key leeter : word  生成对应的 key:value
    else :
        by_letter[letter].append(word)   # 如果首字母的key已经存在,尾部append value

dict 键

dict 的键必须是不可变的对象
比如 标量类型或 tuple(内部对象必须是不可变的)

hash((1, 2, [2, 3]))
# hash 检查是否可以组成dict的键, tuple内部的[2,3]是可变的,所以无法作为dict 的key

集合 # 无序且元素唯一的容器,详见书 p68-p69

# 列表、字典、集合推导式

list = [x.upper for x in a if len(x) > 2]
dict = {key : value for value in collection if condition}
set = {expr for value in collection if condition }

函数 func

my_function(1,2, z=7)
# 位置参数、关键字参数     关键字必须在位置参数后

文本简单清洗

正则表达式
def remove_punctuation(value):
    return re.sub('[!#?]', '', value) # func 清洗符号, value是值

clean_ops = [str.strip, remove_punctuation, str.title]  
# 多个清洗函数

def clean_strings(strings, ops):   # strings 是数据, ops 是多个清洗方法
    result = []
    for value in strings:     # value 值
        for function in ops:  # 迭代函数
            value = function(value)  # 清洗
        result.append(value)      # 清洗结束后添加到result
    return result

map

for x in map(remove_punctuation, data):   # map 调用函数
    print(x)

lambda

匿名函数 lambda x : x.upper
# x 進行大寫操作

好的,第三章知识点记录结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值