数据分析numpy pandas matplotlib
Numpy:数组批量计算
Pandas:灵活的表计算
Matplotlib:数据可视化
IPython高级功能
Tab键自动补全
?:内省、命名空间搜索
!:执行系统命令
丰富的快捷键
魔术命令:
以%开始的命令
%run:执行文件代码
%paste:执行剪贴板代码
%timeit:评估运行时间
%pdb:自动调试
使用命令历史
获取输入输出结果 上一行输出 行号 _i行号 获取输入
目录标签系统
IPython Notebook
ndarray—多维数组对象
创建ndarray:np.array(arraylike)
数组与列表的区别:1.数组对象内的元素类型必须相同2.数组大小不可修改
ndarray—数据类型
布尔型 bool
整型 int int8 int16 int32 int64
无符号整型 uint8 uint16 uint32 uint64
浮点型 float float16 float32 float64
复数型 complex_ complex64 complex128
ndarray—常用属性
T 数组的转置(对高维数组而言)
size 数组元素的个数
ndim 数组的维数
shape 数组的维度大小(元组形式)
dtype 数组元素的数据类型
ndarray—创建
array() 将列表转换为数组,可选择显式指定dtype
arange() range的numpy版,支持浮点数
linspace() 类似arange(),第三个参数为数组长度
zeros() 根据指定形状和dtype创建全0数组
ones() 根据指定形状和dtype创建全1数组
empty() 根据指定形状和dtype创建空数组(随机值)
eye() 根据指定边长和dtype创建单位矩阵
ndarray—批量运算
数组和标量之间的运算 a+1 a3 1//a a*0.5 a>5
同样大小数组之间的运算 a+b a/b ab a%b a==b
ndarray—索引
一维数组的索引 a[5]
多维数组的索引:列表式写法 a[2][3] 新式写法 a[2,3]
ndarray—切片
一维数组的切片:a[5:8] a[4:] a[2:10]=1
多维数组的切片:a[1:2,3:4] a[:,3:5] a[:,1]
数组切片与列表切片的不同:数组切片时并不会自动复制(而是创建一个视图)
在切片数组上的修改会影响原数组
tip.copy()方法可以创建数组的深拷贝
ndarray—布尔型索引
a[a>5]
原理:数组与标量的运算:对a中的每一个元素进行判断,返回一个布尔数组
布尔型索引:将同样大小的布尔数组传进索引,会返回一个由所有True对应位置的元素的数组 与& 或|
ndarray—通用函数
能同时对数组中所有元素进行运算的函数
常见通用函数:
一元函数:abs,sqrt,exp,log,ceil,floor,rint,trunc,modf,isnan,isinf,cos,sin,tan
二元函数:add,substract,multiply,divide,power,mod,maximum,mininum
补充—浮点数特殊值
nan(not a number):不等于任何浮点数(nan!=nan)
inf(infinity):比任何浮点数都大
Numpy中创建特殊值 np.nan np.inf
在数据分析中,nan常被用作表示数据缺失值
Numpy—数学和统计方法
sum 求和
mean 求平均数
std 求标准差
var 求方差
min 求最小值
max 求最大值
argmin 求最小值索引
argmax 求最大值索引
Numpy—随机数生成
随机数函数在np.random子包内
rand 给定形状产生随机数组(0到1之间的数)
randint 给定形状产生随机整数
choice 给定形状产生随机选择
shuffle 与random.shuffle相同
uniform 给定形状产生随机数组
Pandas简介:一个强大的Python数据分析的工具包,是基于Numpy构建的
Pandas的主要功能:具备对其功能的数据结构DataFrame,Series;集成时间序列功能;提供丰富的数学运算和操作、灵活处理缺失数据
安装:pip install pandas
引用:import pandas as pd
Series—一维数据对象:一种类似于一维数组的对象,由一组数据和一组与之相关的数据标签(索引)组成
创建方式:
pd.Series([4,7,-5,3])
pd.Series([4,7,-5,3],index=[‘a’,’b’,’c’,’d’])
pd.Series([‘a’:1,’b’:2])
pd.Series(0,index=[‘a’,’b’,’c’,’d’])
获取值数组和索引数组:values属性和index属性
Series比较像列表(数组)和字典的结合体
Series—使用特性
Series支持array的特性(下标):
从ndarray创建Series:Series(arr)
与标量运算:sr*2
两个Series运用:sr1+sr2
索引:sr[0] sr[[1,2,4]]
切片:sr[0:2]
通用函数:np.abs(sr)
布尔值过滤:sr[sr>0]
Series支持字典的特性(标签):
从字典创建Series:Series(dic)
in运算:’a’ in sr
键索引:sr[‘a’],sr[[‘a’,’b’,’d’]]
pd.value_counts(a)
Series—整数索引
如果索引是整数类型,则根据整数进行下标获取值时总是面向标签的
解决方法:
loc属性(将索引解释为标签)
iloc属性(将索引解释为下标)
Series—数据对齐
pandas在进行两个Series对象的运算时,会按索引进行对齐然后计算
灵活的算术方法 add sub dir mul
srl.add(sr2,fill_value=0) 默认填充是NaN
缺失数据处理dropna fillna
DataFrame—二维数据对象
一个表格型的数据结构,含有一组有序的列
可以被看做是由Series组成的字典,并且共用一个索引
创建方式:
pd.DataFrame({‘one’:[1,2,3,4],’two’:[4,3,2,1]})
pd.DataFrame({‘one’:pd.Series([1,2,3],index=[‘a’,’b’,’c’]),’two’:pd.Series([4,3,2,1],index=[‘a’,’b’,’c’,’d’])})
csv文件读取与写入:
df.read_csv(‘filename.csv’)
df.to_csv()
DataFrame—常用属性
index 获取索引
columns 获取列索引
describe() 获取快速统计
T 转置
values 获取值数组
DataFrame—索引和切片
DataFrame是一个二维数据类型,所以有行索引和列索引
DataFrame同样可以通过标签和位置两种方法进行索引和切片
loc属性和iloc属性
使用方法:逗号隔开,前面是行索引,后面是列索引
行/列索引部分可以是常规索引、切片、布尔值索引、花式索引任意搭配
DataFrame—数据对齐与缺失数据
DataFrame对象在运算时,同样会进行数据对齐,其行索引和列索引分别对齐
DataFrame处理缺失数据的相关方法:
dropna(axis=0,where=’any’,…)
fillna()
isnull()
notnull()
Pandas—其他常用方法
mean(axis=0,skipna=False) 对列(行)求平均值
sum(axis=1) 对列(行)求和
sort_index(axis,…,ascending) 对列(行)索引排序
sort_values(by,axis,ascending) 按某一列(行)的值排序
Numpy的通用函数同样适用于pandas
Pandas—时间对象处理
时间序列类型
时间戳:特定时刻
固定时期
时间间隔:起始时间—结束时间
python标准库处理时间对象:datatime
灵活处理时间对象:dateutil
dateutil.parser.parse()
成组处理时间对象:pandas
pd.to_datetime()
产生时间对象数组:date_range
start开始时间
end结束
periods时间长度
freq时间频率 默认为’D’ 可选:H时W周 B工作日 SM半月 T分 S秒 A年
时间序列就是以时间对象为索引的Sries或DataFrame
datetime对象作为索引时是存储在DatetimeIndex对象中的
时间序列特殊功能:
传入”年”或”年月”作为切片方式
传入日期范围作为切片方式
丰富的函数支持:resample(),truncate(),…
Pandas—文件处理
数据文件常用格式 csv(以某间隔符分割数据)
pandas读取文件:从文件名、URL、文件对象中加载数据
read_csv 默认分隔符为逗号
read_table 默认分隔符为制表符
read_csv\read_table 函数主要参数:
sep 指定分隔符,可用正则表达式如’\s+’
header=None 指定文件无列名
name 指定列名
index_col 指定某列作为索引
skip_row 指定跳过某些行
na_values 指定某些字符串表示缺失值
parse_dates 指定某些列是否被解析为日期,类型为布尔值或列表
写入到csv文件:to_csv函数
写入文件函数的主要参数:
sep 指定文件分隔符
na_rep 指定缺失值转换的字符串,默认为空字符串
header=False 不输出列名一行
index=False 不输出行索引一列
cols 指定输出的列,传入列表
pandas支持的其他文件类型:json,XML,HTML,数据库,pickle,excel,…
Matplotlib介绍—一个强大的Python绘图和数据可视化的工具包
安装 pip install matplotlib
引用 import matplotlib.pypolt as plt
绘图函数 plt.plot()
显示图像 plt.show()
Matplotlib—plot函数
plot函数:绘制折线图
线型 linestyle(-,-.,- -,…)
点型 marker(v,^,s,*,H,+,x,D,o,…)
颜色 color(b,g,r,y,k,w,…)
plot函数绘制多条曲线
pandas包对plot的支持
Matplotlib—图像标注
设置图像标题:plt.title()
设置x轴名称:plt.xlabel()
设置y轴名称:plt.ylabel()
设置x轴范围:plt.xlim()
设置y轴范围:plt.ylim()
设置x轴刻度:plt.xticks()
设置y轴刻度:plt.yticks()
设置曲线图例:plt.legend()
设置轴最小刻度
from matplotlib.pyplot import MultipleLocator
x_major_locator=MultipleLocator(1)
ax=plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
显示中文
plt.rcParams[‘font.sans-serif’]=[‘SimHei’]
plt.rcParams[‘axes.unicode_minus’]=False
Matplotlib—画布与子图
画布:figure fig=plt.figure()
图:subplot axl=fig.add_subplot(2,2,1)
调节子图间距:subplots_adjust(left,bottom,right,top,wspace,hspace)
Matplotlib—支持的图类型
函数
plt.plot(x,y,fmt,…) 坐标图
plt.boxplot(data,notch,position) 箱型图
plt.bar(left,height,width,bottom) 条形图
plt.barh(width,bottom,left,height) 横向条形图
plt.polar(theta,r) 极坐标图
plt.pie(data,explode) 饼图
plt.psd(x,NFFT=256,pad_to,Fs) 功率谱密度图
plt.spe(gramlx,NFFT=256,pad_to,F) 谱图
plt.cohere(x,y,NFFT=256,Fs) X—Y相关性函数
plt.scatter(x,y) 散点图
plt.step(x,y,where) 步阶图
plt.hist(x,bins,normed) 直方图