数据分析常用库

numpy:数组计算

文档

NumPy是高性能科学计算和数据分析的基础包。它是pandas等其他各种工具的基础。

NumPy的主要功能(*为不常用)

ndarray,一个多维数组结构,高效且节省空间

无需循环对整组数据进行快速运算的数学函数

*读写磁盘数据的工具以及用于操作内存映射文件的工具

*线性代数、随机数生成和傅里叶变换功能

*用于集成C、C++等代码的工具

 简介

1.为什么要使用ndarray:
占用内存小
计算速度快
数学运算方法多

2.ndarray还可以是多维数组,但元素类型必须相同

3.类型转换:astype()

常用属性

T		数组的转置(对高维数组而言)
dtype	数组元素的数据类型
size	数组元素的个数
ndim	数组的维数
shape	数组的维度大小(以元组形式)
reshape 格式化一个矩阵(一维->多维)
ravel 格式化一个矩阵(多维->一维)

创建ndarray

array([])		将python列表转换为数组,可选择显式指定dtype
arange()		range的numpy版,支持浮点数
zeros()		根据指定形状和dtype创建全0数组
ones()		根据指定形状和dtype创建全1数组
*linspace()	类似arange(),第三个参数为数组长度
*empty()		根据指定形状和dtype创建空数组(随机值)

索引和切片

数组和标量之间的运算
a+1	a*3	1//a	a**0.5

同样大小数组之间的运算
a+b	a/b	a**b

数组的索引
a[5]	
a2[2][3]		a2[2,3]

数组的切片
a[5:8]		a[:3] = 1
a2[1:2, :4]	a2[:,:1]	a2[:,1]

与列表不同,数组切片时并不会自动复制,在切片数组上的修改会影响原数组。	【解决方法:copy()】
b = a[:4]
b[-1] = 250
b = a[:4].copy()
b[-1] = 250

布尔型索引

In [8]: import numpy as np

In [9]: a
Out[9]: array([1, 2, 3]

In [10]: b=np.array([True,False,True])

In [11]: a[b]
Out[11]: array([1, 3])

 

In [19]: a<3
Out[19]: array([ True,  True, False], dtype=bool)

In [20]: a[a<3]
Out[20]: array([1, 2])

In [21]: a[(a<3) & (a%2==0)]  # 并且& 或|
Out[21]: array([2]) 

花式索引

In [7]: a[[0,2]]
Out[7]: array([1, 3])
import numpy as np

x = np.array([[1, 2], [3, 4], [5, 6]])
y = x[[0, 1, 2],
      [0, 1, 0]]
print x
print y


###
[[1 2]
 [3 4]
 [5 6]]
[1 4 5]
取几个点

通用函数

通用函数:能同时对数组中所有元素进行运算的函数 常见通用函数:

一元函数:abs, sqrt, ceil, floor, rint, trunc, modf, isnan, isinf, cos, sin, tan,exp, log,
二元函数:maximum, mininum,add, substract, multiply, divide, power, mod

数学和统计方法

常用函数:
sum	求和,多维的有axis按行和列求和
mean	求平均数
min	求最小值
max	求最大值
std	求标准差
var	求方差
argmin	求最小值索引
argmax	求最大值索引

随机数生成

rand		给定形状产生随机数组(0到1之间的数)
randint		给定形状产生随机整数
choice		给定形状产生随机选择
shuffle		与random.shuffle相同
uniform		给定形状产生随机数组

pandas:数据分析

文档

pandas是一个强大的Python数据分析的工具包。

pandas是基于NumPy构建的。

pandas的主要功能

具备对其功能的数据结构DataFrame、Series
集成时间序列功能
提供丰富的数学运算和操作(得益于基于numpy)
灵活处理缺失数据

Series

简介

Series是一种类似于一维数组的对象,由一组数据和一组与之相关的数据标签(索引)组成。

Series比较像列表(数组)和字典的结合体

获取值数组和索引数组:values属性和index属性

 创建方式

可通过列表list、数组np.array、字典dict创建

In [22]: import pandas as pd

In [23]: pd.Series([4,7,-5,3])
Out[23]:
0    4
1    7
2   -5
3    3
dtype: int64

In [24]:  pd.Series([4,7,-5,3],index=['a','b','c','d'])
Out[24]:
a    4
b    7
c   -5
d    3
dtype: int64

In [25]: pd.Series({'a':1, 'b':2})
Out[25]:
a    1
b    2
dtype: int64

In [26]: pd.Series(0, index=['a','b','c','d'])
Out[26]:
a    0
b    0
c    0
d    0
dtype: int64
View Code

 Series特性

Series支持NumPy模块的特性(下标):
从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']]

Series特性

Series支持NumPy模块的特性(下标):
从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']]

整数索引

如果索引是整数类型,则根据整数进行数据操作时总是面向标签(字符串)的。iloc可解决

In [14]: pd.Series([4,7,-5,3])
Out[14]:
0    4
1    7
2   -5
3    3
dtype: int64

In [15]: _.iloc[-1]
Out[15]: 3

数据对齐

In [7]: import pandas as pd

In [8]: sr1 = pd.Series([12,23,34], index=['c','a','d'])
   ...: sr2 = pd.Series([11,20,10], index=['d','c','a',])
   ...:

In [9]: sr1
Out[9]:
c    12
a    23
d    34
dtype: int64

In [10]: sr2
Out[10]:
d    11
c    20
a    10
dtype: int64

In [11]: sr1+sr2
Out[11]:
a    33
c    32
d    45
dtype: int64

In [12]: sr1.add(sr2)
Out[12]:
a    33
c    32
d    45
dtype: int64

In [13]: sr3 = pd.Series([11,20,10,14], index=['d','c','a','b'])
    ...: sr1+sr3
    ...:
Out[13]:
a    33.0
b     NaN
c    32.0
d    45.0
dtype: float64

In [14]: sr1.add(sr3)
Out[14]:
a    33.0
b     NaN
c    32.0
d    45.0
dtype: float64

In [15]: sr1.add(sr3, fill_value=0)
Out[15]:
a    33.0
b    14.0
c    32.0
d    45.0
dtype: float64
View Code

缺失数据

缺失数据:使用NaN(Not a Number)来表示缺失数据。其值等于np.nan。内置的None值也会被当做NaN处理。

处理缺失数据的相关方法:
dropna()		过滤掉值为NaN的行
fillna()		填充缺失数据
isnull()		返回布尔数组,缺失值对应为True
notnull()		返回布尔数组,缺失值对应为False
过滤缺失数据:sr.dropna() 或 sr[data.notnull()]
填充缺失数据:fillna(0) 

 DataFrame

DataFrame是一个表格型的数据结构,含有一组有序的列。

DataFrame可以被看做是由Series(列或行都是Series)组成的字典,并且共用一个索引。

获取某个小DataFrame:loc和iloc

获取某个值:df[str].iloc[int],df.loc[,] , df.iloc[,]

创建方式 

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([1,2,3,4],index=['b','a','c','d'])})

csv文件读取与写入  

df = pd.read_csv('filename.csv')
df.to_csv()

常用属性及方法 

index					获取行索引
T					转置
columns					获取列索引
values					获取值数组
describe()				获取快速统计

索引和切片 

DataFrame有行索引和列索引。 

由于DataFrame行索引和列索引有诸多不可确定性(切片解释为行索引,字符串解释为列索引),推荐用loc和iloc索引

 通过标签获取

df['A']
df[['A', 'B']]
df['A'][0]
df[0:10][['A', 'C']]
df.loc[:,['A','B']]
df.loc[:,'A':'C']
df.loc[0,'A']
df.loc[0:10,['A','C']]

通过位置获取: 

df.iloc[3]
df.iloc[3,3]
df.iloc[0:3,4:6]
df.iloc[1:5,:]
df.iloc[[1,2,4],[0,3]]

通过布尔值过滤  

df[df['A']>0]
df[df['A'].isin([1,3,5])]
df[df<0]=0

数据对齐与缺失  

DataFrame对象在运算时,同样会进行数据对其,结果的行索引与列索引分别为两个操作数的行索引与列索引的并集。  

DataFrame处理缺失数据的方法

dropna(axis=0,where='any',…)
fillna()
isnull()
notnull()

matplotlib:绘图

Matplotlib是一个强大的Python绘图和数据可视化的工具包。

安装方法:pip install matplotlib
引用方法:import matplotlib.pyplot as plt

绘图函数:plt.plot()
显示图像:plt.show()

 plot函数

plot函数:
    线型linestyle(-,-.,--,..)
    点型marker(v,^,s,*,H,+,x,D,o,…)
    颜色color(b,g,r,y,k,w,…)

plot函数绘制多条曲线
标题:set_title
x轴:set_xlabel
y轴:y_label

其他类型图像:
    hist	频数直方图

  

 

转载于:https://www.cnblogs.com/hyit/articles/8368947.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值