ML501-Week1-常用工具

总结一下机器学习常用的工具:

  • Jupyter Notebook
  • Pandas

Jupyter Notebook

Jupyter的名字来源于三种语言:Julia、Python以及R。

对Jupyter已经很熟悉路,这里只总结下Jupyter Notebook里面的Magics:

  • %matplotlib inline: 在Jupyter Notebook中显示matplotlib的图片
  • %%timeit: 测试一个单元格执行了多久
  • %run filename.ipynb: 运行某个.ipynb或者.py文件
  • %load filename.py: 将文件中的内容拷贝到该单元格

Pandas

概述:

  • 适用于表格(tabular)数据的计算库
  • 单个表格中可以存在多种类型的数据
  • 表格的行和列可以命令
  • 包含高级的数据聚合和统计函数

基本的数据结构:

基本类型 Pandas中对应的类型
Vector
(1 Demension)
Series
Array
(2 Demension)
DataFrame

Series的创建

直接使用pd.Series()创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

import pandas as pd
step_data = [3620, 7891, 9761, 3907, 4338, 5373]
step_counts = pd.Series(step_data, name='steps')
print(step_counts)

# Output:

# 默认会生成一个以0开始的数字索引
# 0 3620
# 1 7891
# 2 9761
# 3 3907
# 4 4338
# 5 5373
# Name: steps, dtype: int64

也可以以日期作为索引

1
2
3
4
5
6
7
8
9
10
11
12
13
step_counts.index = pd.date_range('20150329',periods=6)
print(step_counts)

# Output

# 2015-03-29 3620
# 2015-03-30 7891
# 2015-03-31 9761
# 2015-04-01 3907
# 2015-04-02 4338
# 2015-04-03 5373
# Freq: D, Name: steps,
# dtype: int64

Series的索引

可以像dictionary那样进行索引

1
2
3
4
5
print(step_counts['2015-04-01'])

# Output

# 3907

也可以向数组那样通过位置index进行索引

1
2
3
4
5
print(step_counts[3])

# Output

# 3907

还可以索引一部分,例如索引四月份的所有数据

1
2
3
4
5
6
7
8
9
print(step_counts['2015-04'])

# Output

# 2015-04-01 3907
# 2015-04-02 4338
# 2015-04-03 5373
# Freq: D, Name: steps,
# dtype: int64

Series数据类型的转换

查看数据类型

1
2
3
4
5
print(step_counts.dtypes)

# Output:

# int64

将其转换为float类型

1
2
3
4
5
6
step_counts = step_counts.astype(np.float)
print(step_counts.dtypes)

# Output:

# float64

无效数据的处理

可以很方便地填充无效的数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 先创建无效的数据
step_counts[1:3] = np.NaN

# 然后将无效的数据填0
step_counts = step_counts.fillna(0.)
# 或者 step_counts.fillna(0., inplace=True)

print(step_counts[1:3])

# Output:

# 2015-03-30 0.0
# 2015-03-31 0.0
# Freq: D, Name: steps,
# dtype: float64

DataFrame的创建

DataFrame的索引