🖼 人工智能学习总目录

🖼《利用Python进行数据分析》小结可以看这里

本章知识小结:

  • 1、结构化数据 (表格型数据、多维数组矩阵、键位列关联的SQL表、均匀或非均匀的时间序列)
  • 2、全局解释器锁GIL(防止解释器同时执行多个Python指令)
  • 3、numpy、pandas、matplotlib、scipy、scikit-learn、statsmodels
  • 4、处理\处置\ 规整 (munge\munging\wrangling)
  • 5、伪代码:用一种类是代码的形式描述算法或过程
  • 6、语法糖:并不增加新特性,但便利于代码编写的编程语法

1、从Bitly获取1.USQ.gov数据

1.1 纯Python时区计数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import json

# 1、读取1.USQ.gov的web数据。转化为json
path = 'datasets/bitly_usagov/example.txt'
records = [json.loads(line) for line in open(path)]
print(records[0])

# 2、找各个json中存在'tz'字段的数据,然后统计各'tz'字段的个数,找前十的个数
time_zones = [rec['tz'] for rec in records if 'tz' in rec]
time_zones[:10]

from collections import defaultdict
def get_count(sequence):
counts = defaultdict(int)
for x in sequence:
counts[x] +=1
return counts
print(get_count(time_zones))

from collections import Counter
counts = Counter(time_zones)
print(counts.most_common(10))

1.2 用pandas进行时区计数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import json
import pandas as pd

# 1、读取1.USQ.gov的web数据。转化为json
path = 'datasets/bitly_usagov/example.txt'
records = [json.loads(line) for line in open(path)]

# 2、原始数据生成DataFrame
frame = pd.DataFrame(records)
print(frame.info())
print(frame['tz'][:10])

# 3、对'tz' 字段计数,找到前十的'tz'
tz_counts = frame['tz'].value_counts()
print(tz_counts[:10])

# 4、用fillna方法替换缺失值
clean_tz = frame['tz'].fillna('Missing') #这个Missing可以理解成注释,对生成clean_tz不影响
clean_tz[clean_tz == ''] = 'Unknown'
tz_counts = clean_tz.value_counts()
print(tz_counts[:10])

# 5、使用seaborn绘制水平柱状图
import seaborn as sns
subset = tz_counts[:10]
sns.barplot(y = subset.index , x = subset.values)

# 6、找长信息中需要信息
results = pd.Series([x.split()[0] for x in frame.a.dropna()]) #第a列,去NA值,拆成单词,第1个
print(results[:5])
print(results.value_counts()[:8])

# 7、判断长信息是否存在’Windows‘字段
import numpy as np
cframe = frame[frame.a.notnull()]
cframe['os'] = np.where(cframe['a'].str.contains('Windows'),'Windows','Not Windows')
print(cframe['os'][:5])

# 8、根据’tz‘时区列和’os‘列对数据进行分组
by_tz_os = cframe.groupby(['tz','os'])
agg_counts = by_tz_os.size().unstack().filnla(0) #size计数 unstack重塑 fillna去NA,记为0
print(agg_counts[:10])

# 9、计数最高时区,进行升序排列
indexer = agg_counts.sum(1).argsort() #对'Windows'和'Not Windows'求和/升序排列并构建一个间接索引
print(indexer[:10])

# 10、从agg_counts中拿到已排序的indexer中最后十个元素
# print(agg_counts.sum(1).nlargest(10)) #效果一样,找到和值最大的十个元素
count_subset = agg_counts.take(indexer[-10:])
print(count_subset)

# 11、
print(agg_counts.sun(1).nlargest(10))

2、MovieLens 1M数据集

3、美国1880~2010年的婴儿名字

4、美国农业部视频数据库

5、2012年联邦选举委员会数据库

6、本章小结(一些扩充的内容)

6.1 高阶numpy

6.2 更多IPython系统相关内容