本书主要讲解的是利用
Python
进行数据控制、处理、整理、分析等。书中所指的数据为:
- 多维数组矩阵
- 表格型数据,各列可能含有不同类型的数据(字符串、数值、日期等)
- 保存在关系型数据库中或以制表符/逗号分隔符的文本文件中的数据
- 通过关键列相互联系的多个表
源码地址
Numpy
Numpy
是Python
科学计算的基础包。主要功能有:
- 快速高效的多维数组对象
ndarray
- 用于对数组执行元素级计算
- 直接对数组执行数学运算的函数
- 线性代数运算、傅里叶变换、随机数生成等
- 用于将
C\C++\Fortran
代码集成到Python
的工具
pandas
pandas兼具Numpy高性能的数组计算功能以及电子表格和关系型数据(SQL)等灵活的数据处理功能
- 提供了复杂精细的索引功能:重塑、切片、切块、聚合、选取数据子集等操作
- 提供了大量处理结构化数据的函数
- pandas中的对象是DataFrame,它是面向列的二维表结构,含有行标和列标
- 金融行业:提供了大量适用于金融数据的高性能时间序列功能和工具
matplotlib
- 最流行的用于绘制图表的Python库
- 提供良好的交互式数据绘图环境
- 绘图环境也是交互式的,在绘图窗口中的工具栏能过对图标进行各种处理
Scipy
image.png image.pngScipy是一组专门用来解决科学计算中各种标准问题域的包的集合,主要的包有:
import json
from collections import defaultdict # 导入默认字典,值全部为0
from collections import Counter # 导入计数器
path = "D:/Python/datalearning/pydata-book/datasets/bitly_usagov/example.txt"
# res = open(path).readline() 读取文件中的一行数据
records = [json.loads(line) for line in open(path)] # 通过json模块的loads()函数将json格式的文件转换成Python字典形式,再读取数据
time_zones = [rec['tz'] for rec in records if 'tz' in rec] # 不是所有的记录都有时区段,需要加上判断语句
# print(time_zones[:10]) 查看前10个时区记录
# 实现计数功能,将计数值保存在字典中
def get_counts(sequence):
counts = {}
for x in sequence: # 先判断x是否在sequence中
if x in counts:
counts[x] += 1 # 如果存在,则值自动加1
else:
counts[x] = 1 # 如果不在,则将x对应的value赋值成1
return counts
def get_counts1(sequence):
counts = defaultdict(int) # 将字典中所有的值初始化为0
for x in sequence:
counts[x] += 1 # 当x在sequence中,则counts的值自动加1;
return counts
# 获取前10位的时区及计数值
def top_counts(count_dict, n=10):
value_key_pairs = [(count, tz) for tz, count in count_dict.items()]
value_key_pairs.sort() # sort()函数默认是升序排列
return value_key_pairs[-n:] # 从索引为-10到最后索引为-1,10个数据
# 通过标准库来实现
counts1 = Counter(time_zones) # 应用collections.Counter类
print(counts1.most_common(10))
print("-------------------")
counts = get_counts(time_zones)
print(top_counts(counts))
# print("time_zones:", counts)
# print("time_zones:", get_counts1(time_zones))
print(counts['America/New_York'])
print(len(time_zones))
网友评论