数据分析笔记(仍需更新)

根据极客时间陈旸老师的《数据分析45讲》所整理的笔记。

Python基础语法

版本为 Python3.6。

输入与输出

1
2
3
4
name = input("What's your name?")
sum = 100 + 100
print('hello,%s' % name)
print('sum = %d' % sum)

判断语句

注意冒号

1
2
3
4
5
6
7
if score >= 90:
print('Excellent')
else:
if score < 60:
print('Fail')
else:
print('Good Job')

代码缩进在 Python 中是一中语法,相同层次的代码一定要采用相同层次的缩进,比如同是空格或TAB,不能一会空格一会TAB

循环语句

注意冒号

for 循环

1
2
3
4
sum = 0
for number in range(11):
sum = sum + number
print(sum)

while 循环

1
2
3
4
5
6
sum = 0
number = 1
while number < 11:
sum = sum + number
number = number + 1
print(sum)

数据类型

列表[]

列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同的类型。
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。
列表索引从0开始。

1
2
3
4
5
6
7
lists = ['a', 'b', 'c']
lists.append('d')
print(lists)
print(len(lists))
lists.insert(0, 'mm')
lists.pop()
print(lists)

常用技巧与方法

  1. 常用技巧
    更新列表元素
    1
    lists[0] = 1

删除列表元素

1
del lists[0]

嵌套列表

1
2
3
4
5
6
a = ['a', 'b', 'c']  
n = [1, 2, 3]
x = [a, n]
print(x)
print(x[0])
print(x[0][1])

  1. 常用方法
    获取列表元素个数
    len(lists)
    返回列表元素最大最小值
    max(lists)
    min(lists)
    在列表末尾添加新的对象
    lists.append(elm)
    统计某个元素在列表出现的次数
    lists.count(elm)
    在某索引插入某元素
    lists.insert(idx,elm)

    元组()

    元组 tuple 和 list 非常类似,但是 tuple 一旦初始化就不能修改。因为不能修改所以没有 append(),insert() 这样的方法,可以像访问数组一样进行访问,比如 tuples[0], 但不能赋值
    1
    2
    tuples = ('tupleA','tupleB')
    print(tuples[0])

字典{}

字典其实就是{key, value},字典也有增删改查。增加字典的元素相当于赋值,比如 score[‘ZhaoYun’] = 98, 删除一个元素使用 pop ,查询使用 get,如果查询的值不存在,我们也可以给一个默认值,比如 score.get(‘yase’, 99)。

1
2
3
4
5
6
7
score = {'guanyu': 95, 'zhangfei': 96}
score['zhaoyun'] = 98
print(score)
score.pop('zhangfei')
print('guanyu' in score)
print(score.get('guanyu'))
print(score.get('yase', 99))

集合 set

集合 set 和字典 dictory 类似,不过它只存储 key, 不存储 value。 增加使用 add, 删除使用 remove, 查询是否在这个集合里使用 in。

1
2
3
4
5
s = set(['a', 'b', 'c'])
s.add('d')
s.remove('b')
print(s)
print('c' in s)

NumPy库

ndarray对象

ndarray 实际上是多维数组,在 NumPy 数组中,维数称为秩(rank),一维数组的 Rank 为1,二维为2……在 NumPy 中,每一个线性的数组称为一个轴(axes),秩描述了轴的数量。

创建数组

1
2
3
4
5
6
7
8
import numpy as np
a = np.array([1, 2, 3])
b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b[1, 1] = 10
print(a.shape)
print(b.shape)
print(a.dtype)
print(b)

a 为一维数组,b 为二维数组(嵌套构成二维数组)。通过函数 shape 获得数组的大小,通过 dtype 获得元素的属性。如若需要修改元素,直接赋值即可(下标从0开始)。

结构数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import numpy as np
persontype = np.dtype({
'names': ['name', 'age', 'chinese', 'math', 'english'],
'formats': ['S32', 'i', 'i', 'i', 'f']
})
peoples = np.array(
[("ZhangFei", 32, 75, 100, 90),
("GuanYu", 24, 85, 96, 88.5),
("ZhaoYun", 28, 85, 92, 96.5),
("HuangZhong", 29, 65, 85, 100)], dtype=persontype)
ages = peoples[:]['age']
chineses = peoples[:]['chinese']
maths = peoples[:]['math']
englishs = peoples[:]['english']
print(np.mean(ages))
print(np.mean(chineses))
print(np.mean(maths))
print(np.mean(englishs))

其中在 persontype formats 字段中的 S32 表示 32个字节的字符串类型, i 表示 32位的整数类型, f 表示 32位的单精度浮点数类型。
首先创建一个 dtype 对象 persontype,通过字典描述字段,names 定义结构中的字段名, formats 定义每个字段的类型。之后调用 array 函数创建结构数组,传入参数即可得到结构数组。
mean 函数可以计算平均值。