Numpy 一维数组
创建一维数组
a = np.array([1,2,3,4])
使用索引查询元素
IN : a[0]
OUT : 1
切片查询(:)
IN :a[0:1]
OUT : array([1])
IN :a[1:3]
OUT : array([2,3,4])
IN :a[-1:]
OUT : array([4])
数据类型(dtype)
IN : a.dtype
OUT : dtype('int32')
计算平均值(mean)
IN : a.mean()
OUT : 2.5
计算标准差(std)
IN : a.std()
OUT : 1.118033988749895
向量化计算(向量与标量的计算)
IN : b = a * 4
IN : b
OUT : array([ 4, 8, 12, 16])
Pandas 一维数据结构
创建一维数据结构(Series,使用index增加索引)
IN : camera_s = pd.Series([2500,3000,500,1000,1500],
index = ['FM2','F3','FTN','FA','F2'])
IN : camera_s
OUT :
FM2 2500
F3 3000
FTN 500
FA 1000
F2 1500
dtype: int64
描述性统计(describe)
IN : camera_s.describe()
OUT :
count 5.000000
mean 1700.000000
std 1036.822068
min 500.000000
25% 1000.000000
50% 1500.000000
75% 2500.000000
max 3000.000000
dtype: float64
根据索引获取值(iloc根据位置索引 、 loc根据关键字索引)
IN : camera_s.iloc[1]
OUT : 3000
IN : camera_s.loc['F3']
OUT : 3000
向量运算
IN : c1 = pd.Series([1,2,3,4],index = ['a','b','c','d'])
IN : c2 = pd.Series([11,22,33,44],index = ['a','b','e','f'])
IN : c3 = c1 + c2
IN : c3
OUT:
a 12.0
b 24.0
c NaN
d NaN
e NaN
f NaN
dtype: float64
出现NaN ,就是空值,是因为部分索引只在一个数据结构中出现,
这时候我们有两种方法处理空值,
1>删除空值(dropna())
IN : c3.dropna()
OUT :
a 12.0
b 24.0
dtype: float64
2>将空值替换为想要的值
IN : c3 = c1.add(c2,fill_value = 0)
IN : c3
OUT :
a 12.0
b 24.0
c 3.0
d 4.0
e 33.0
f 44.0
dtype: float64
Numpy二维数组
创建numpy二维数组
a = np.array([[1,2,3,4],
[11,22,33,44],
[111,222,333,444]])
查询元素(a[行号,列号])
IN : a[0,:]
OUT : array([1, 2, 3, 4])
IN : a[:,0]
OUT : array([ 1, 11, 111])
计算平均值(mean())
IN : #如果没有指定数轴参数,会计算整个数组的平均值
IN : a.mean()
OUT : 102.5
IN : #按轴计算:axis=1计算每一行
IN : a.mean(axis = 1)
OUT : array([ 2.5, 27.5, 277.5])
Pandas二维数组:数据框(DataFrame)
适合创建表格数据
IN :
import pandas as pd
#第1步:定义一个字典,映射列名与对应列的值
sales_dict = {
'购买时间':['2017-10-7 星期六','2018-07-22 星期三','2018-05-06 星期三'],
'相机编号':['001616528','001616528','0012602828'],
'商品编码':[236701,236701,236701],
'商品名称':['尼康FM2','尼康F3','尼康玛特FTN'],
'销售数量':[6,1,2],
'应收金额':[82.8,28,16.8],
'实收金额':[69,24.64,15]
}
#导入有序字典
from collections import OrderedDict
#定义一个有序字典
sales_orderdict = OrderedDict(sales_dict)
#定义数据框:传入字典,列名
salesDF = pd.DataFrame(sales_orderdict)
salesDF
计算平均值(mean())
IN : salesDF.mean()
OUT :
商品编码 236701.000000
销售数量 3.000000
应收金额 42.533333
实收金额 36.213333
dtype: float64
通过索引序号查询元素(iloc)
IN :
'''
iloc属性用于根据位置获取值
'''
#查询第1行第2列的元素
salesDF.iloc[0,3]
OUT :
'尼康FM2'
#获取第1行,:代表所有列
salesDF.iloc[0,:]
OUT :
购买时间 2017-10-7 星期六
相机编号 001616528
商品编码 236701
商品名称 尼康FM2
销售数量 6
应收金额 82.8
实收金额 69
Name: 0, dtype: object
IN :
#获取第1列,:代表所有行
salesDF.iloc[:,3]
OUT :
0 尼康FM2
1 尼康F3
2 尼康玛特FTN
Name: 商品名称, dtype: object
通过索引值查询元素(loc)
IN :
'''
loc属性用于根据索引获取值
'''
#查询第1行"商品名称"列的元素
salesDF.loc[0,'商品名称']
OUT :
'尼康FM2'
IN :
#获取第1行
salesDF.loc[0,:]
OUT :
购买时间 2017-10-7 星期六
相机编号 001616528
商品编码 236701
商品名称 尼康FM2
销售数量 6
应收金额 82.8
实收金额 69
Name: 0, dtype: object
IN :
#获取“商品名称”这一列
#salesDf.loc[:,'商品名称']
#简单方法:获取“商品名称”这一列
salesDF['商品名称']
OUT :
0 尼康FM2
1 尼康F3
2 尼康玛特FTN
Name: 商品名称, dtype: object
查询多列及切片
# 通过列表查询某几列的数据(好像得按顺序输入,不然会出错)
IN : salesDF[['商品名称','销售数量']]
OUT :
IN :
#通过切片功能,获取指定范围的列
salesDF.loc[:,'相机编号':'销售数量']
OUT :
通过条件判断筛选
IN :
#通过条件判断筛选
#第1步:构建查询条件
querySer = salesDF.loc[:,'销售数量']>1
# 调用查询
salesDF.loc[querySer,:]
读取Excel数据
#读取Ecxcel数据
fileNameStr='./朝阳医院2018年销售数据.xlsx'
xls = pd.ExcelFile(fileNameStr)
salesDf = xls.parse('Sheet1')
操作
#打印出前3行,以确保数据运行正常
salesDf.head(5)
#有多少行,多少列
salesDf.shape
#查看某一列的数据类型
salesDf.loc[:,'销售数量'].dtype
#查看每一列的统计数值
salesDf.describe()