本文首先介绍一下做数据分析与可视化所必备的Python基础,涉及Python的组合数据类型、控制流以及常用的内置函数。
我们将讨论数据处理常见的数据类型。
Python中的列表
列表是Python中常用的数据类型。列表中的元素是有序的,可变的,并且允许重复。我们可以用[]来创建一个列表。
同时我们还可以对一个列表进行分割也就是进行切片。切片意味着提取列表的一部分。切片的时候,第一个数字包含在返回集中,最后一个数字则不包含在返回集中。例如:
p1 = [1,2,3,4,5,6,7,8,9,10]
p2 = p1[0:5]
列表p2将为[1,2,3,4,5]。索引是从0开始的,第5个索引对应p1中的6但是返回的元素中不包括6
PS:也可以将p2 = p1[0:5]写为p2 = p1[:5].
以下代码是列表中常用的方法。请读者根据注释以及打印语句来理解每一行代码在做什么
# 创建一个列表
depths = [1, 5, 3, 6, 4, 7, 10, 12]
# 输出前5个元素。“:”之前没有数字就默认为0
first_5_depths = depths[:5]
print("---0---")
print(first_5_depths)
# 进行简单的求和操作
print("---1---")
print(sum(depths))
#求最大值
print("---2---")
print(max(depths))
# 末尾为负数,因此返回最后一个元素
print("---3---")
print(depths[-1])
# 返回列表倒数第二个元素到最后一个元素
# “:”没有数字表示到列表末尾
print("---4---")
print(depths[-2:])
#返回列表的第2,3,4个元素
# 记住是从0开始计数
print("---5---")
print(depths[2:5])
# 验证数字是否在列表中
print("---6---")
print(22 in depths)
print(1 in depths)
# 将另外一个元素添加到列表末尾
depths.append(44)
print("---7---")
print(depths)
# 将另外一个列表添加到列表中
depths.extend([100, 200])
print("---8---")
print(depths)
# 修改列表中的某个值
# 用100替换了列表中的第四个值
depths[4] = 100
print("---9---")
print(depths)
# 在列表某个位置插入元素
depths.insert(5, 1000)
print("---10---")
print(depths)
Python中的字典
另外一个有用的数据类型是字典。字典包含键值对。也就是说,字典中的键是唯一的,并且每个键对应一个值。映射类型:
通过“键”-“值”的映射实现数据存储和查找。常规的字典是无序的,字典的键必须是不可变类型,如果键可变,就找不到对应存储的值了。我们可以用{}来初始化一个字典。让我们以代码展现某些功能。
# 初始化字典
# 首先是键,然后是":",最后是值
my_dict = {"age": 22, "birth_year": 1999, "name": "jack", "siblings": ["jill", "jen"]}
# 获取键为“age”的值
print("---0---")
print(my_dict['age'])
# 检查“age”在不在字典的键中
print("---1---")
print('age' in my_dict)
# 检查“company”在不在字典的键中
print("---2---")
print('company' in my_dict)
# 获取键为“age”的值
print("---3---")
print(my_dict.get('age'))
# 获取键为“company”的值
#如果不存在则返回-1
print("---4---")
print(my_dict.get('company', 1))
# 返回所有的键
print("---5---")
print(my_dict.keys())
# 返回所有的值
print("---6---")
print(my_dict.values())
# 返回所有键值对
print("---7---")
print(my_dict.items())
我们还可以使用默认字典,这是一种更高级的字典,允许指定默认数据类型,请看代码
from collections import defaultdict # 导入 defaultdict 类
my_default_dict