![38b3830ac513e90e4d7626ab1403b75d.png](https://i-blog.csdnimg.cn/blog_migrate/e9443b3125756c279340e11671a6aa3d.jpeg)
吞一块大饼,还不如切成小块吃得香
常见的数据集,要么是数列,要么是表格;
因此,数据分析最首要的是,处理一维、二维数据。
主要知识点可参考如图。
![8fd0ce7a4c81e879f863254e2fa38756.png](https://i-blog.csdnimg.cn/blog_migrate/eeb018ccaa68ce334b11f66c9f5224c9.jpeg)
如需要,可点击以下百度网盘链接下载数据分析基础知识图PDF:
mindmap2_数据分析基础.pdf
308.7K
·
百度网盘
数据分析常用第三方包
- Numpy
- Pandas
- Matplotlib
#导入numpy包
import numpy as np
#导入pandas包
import pandas as pd
1. 一维数据
- Numpy(Numerical Python): Array
- Pandas: Series
1.1 Numpy-Array
#定义:一维数组array
#参数:一个列表[2,3,4,5]
a = np.array([2,3,4,5])
#查询
a[0]
2
#切片访问:获取指定序号范围的元素
#a[1:3]获取到的是序号从1到3的元素
a[1:3]
array([3, 4])
#切片访问:反序
a[::-1]
array([5, 4, 3, 2])
#循环访问
for i in range(len(a)):
print(a[i])
2
3
4
5
#循环访问
for i in a: # 获取a数组里面的数据,从i=2开始
print(a[i-2])
2
3
4
5
#循环访问
for i in a:
print(i)
2
3
4
5
#查看数据类型
a.dtype
dtype('int32')
#统计计算:平均值
a.mean()
3.5
#统计计算:标准差
a.std()
1.118033988749895
#向量化计算:向量相加
b=np.array([1,2,3])
c=np.array([4,5,6])
b+c
array([5, 7, 9])
#向量化计算:乘以标量
d=b*4
d
array([ 4, 8, 12])
区别:Numpy数组&Python列表
- 1.处理多维数组
- ndArray
- list嵌套
- 2.存储、运算效率
- Array > list
- 3.元素数据类型
- Array:必须相同
- List:可不同
1.2 Pandas-Series
#定义:一维数据结构:Series,index为索引
#存放6家公司某一天的股价(单位是美元)
stockS=pd.Series([54.74,190.9,173.14,1050.3,181.86,1139.49],
index=['腾讯',
'阿里巴巴',
'苹果',
'谷歌',
'Facebook',
'亚马逊'])
stockS
![37e991fd9cb3e6244afee8295292dab5.png](https://i-blog.csdnimg.cn/blog_migrate/88cd25e432e1223a608d96fca7617707.png)
#获取描述统计信息
stockS.describe()
![fe0afe8a4a70a89fb32d1ca7b5e31625.png](https://i-blog.csdnimg.cn/blog_migrate/ac5e85be7aa7cd537138cb13f9949cd4.png)
统计信息含义如下
- 数据条数count
- 平均值mean
- 标准差std
- 最小值min下四位数25%
- 中位数50%
- 上四位数75%
- 最大值max
#访问:iloc属性用于根据下标获取值
stockS.iloc[0]
54.74
#访问:loc属性用于根据索引获取值
stockS.loc['腾讯']
54.74
#向量化运算:向量相加
s1=pd.Series([1,2,3,4],index=['a','b','c','d'])
s2=pd.Series([10,20,30,40],index=['a','b','e','f'])
s3=s1+s2
s3
![41a22cfb44ef331fa5bada70551ee422.png](https://i-blog.csdnimg.cn/blog_migrate/ab7d61ea42061bebe0a3d7a5847975cb.png)
#处理空值的方法
#方法1:删除
s3.dropna()
![87e8447f206216496de9645019685ef1.png](https://i-blog.csdnimg.cn/blog_migrate/6696561acd9b5058ba05a9f65ede6a20.png)
#方法2:填充
s3=s1.add(s2,fill_value=0)
s3
![2ab02a3cda8327af318ed046f8b928eb.png](https://i-blog.csdnimg.cn/blog_migrate/f8737bd0f3e57ff59d3572efaa80eaef.png)
2.二维数据
- Numpy: Array
- Pandas: DataFrame
- DataFrame处理表格数据比较方便
2.1 Numpy-Array
#定义二维数组
a=np.array([
[1,2,3,4],
[5,6,7,8],
[9,10,11,12]
])
#访问:获取元素
#行号0,列号2
a[0,2]
3
#访问:整行
#获取第1行
a[0,:]
array([1, 2, 3, 4])
#访问:整列
#获取第1列
a[:, 0]
array([1, 5, 9])
#数轴参数 axis
#axis=0,down,纵向处理
#axis=1,across,横向处理
#所有平均值
print(a.mean())
#每行平均值,即每一行取所有列的平均值
print(a.mean(axis=1))
#删除某一列,即列(集)沿着水平的方向依次删掉
#a.drop(colNames,axis=1)
6.5
[ 2.5 6.5 10.5]
![492274e7a9df8937c62f2b47bc4b036b.png](https://i-blog.csdnimg.cn/blog_migrate/f404c449f7dadb540f30c3e8f14699c2.jpeg)
2.2 Pandas-DataFrame
#定义
#第1步:定义一个字典,映射列名与对应列的值
#现Python3的字典对象为有序
salesDict={
'购药时间':['2018-01-01 星期五','2018-01-02 星期六','2018-01-06 星期三'],
'社保卡号':['001616528','001616528','0012602828'],
'商品编码':[236701,236701,236701],
'商品名称':['强力VC银翘片','清热解毒口服液','感康'],
'销售数量':[6,1,2],
'应收金额':[82.8,28,16.8],
'实收金额':[69,24.64,15]
}
#第2步:定义数据框DataFrame
salesDf=pd.DataFrame(salesDict)
salesDf
![d3dcdc930cb827a8cdd443ec7aa88372.png](https://i-blog.csdnimg.cn/blog_migrate/ea07aec805ec4c99a0dc278212a2fbd8.png)
#平均值:是按每列来求平均值
salesDf.mean()
![ca70f9e3eb769b1c83efb9ba37ad763e.png](https://i-blog.csdnimg.cn/blog_migrate/becf5ee6d96fa6ed9bd28fdc7ddc25de.png)
#访问:iloc属性用于根据下标获取值
#查询第1行第2列的元素
salesDf.iloc[0,1]
'001616528'
#获取第1行,:代表所有列
salesDf.iloc[0,:]
![4ee731dbd63a6001a6d947291ba8e527.png](https://i-blog.csdnimg.cn/blog_migrate/c5407b2c029f3ae44136c1792a7daaf8.png)
#获取第1列,:代表所有行
salesDf.iloc[:,0]
![0b5d4a0865420c218b70cc158d4fb630.png](https://i-blog.csdnimg.cn/blog_migrate/8308d5a3f1c947e43c5b6d5f854620ea.png)
#访问:loc属性用于根据索引名获取值
#查询第1行商品编码列的元素
salesDf.loc[0,'商品编码']
236701
#获取“商品名称”这一列
#salesDf.loc[:,'商品名称']
salesDf['商品名称'] #简单方法
![d89f6f1cb3b4663da503296a6fa5644f.png](https://i-blog.csdnimg.cn/blog_migrate/73e542c9324908d65f22fec1c0af6a8a.png)
3.查询操作
3.1 查询列
#指定列
#通过列表来选择某几列的数据
salesDf[['商品名称','销售数量']]
![436f46d238529d7249b5b9b5fec6a796.png](https://i-blog.csdnimg.cn/blog_migrate/cfe5ba059b1f33df860081084c19a3e9.png)
#指定连续的列
#通过切片功能,获取指定范围的列
salesDf.loc[:,'购药时间':'销售数量']
![39147a0c69e893f3963cf4bbdefd5a33.png](https://i-blog.csdnimg.cn/blog_migrate/4665ed410d865bdd8c756ac93389411f.png)
3.2 条件筛选
#第1步:构建查询条件,对象是Series,数据元素是bool
querySer=salesDf.loc[:,'销售数量']>1
type(querySer)
pandas.core.series.Series
querySer
![ec96d198a460e11e904f1b122c60ba60.png](https://i-blog.csdnimg.cn/blog_migrate/f5b5a8830d46271123470ffdb7e6bb18.png)
#第2步:应用查询条件
#只能指定列
#Error:salesDf.loc[:,querySer]
salesDf.loc[querySer]
![4d1a25cd5bf19c6fd4c4af3fa399e306.png](https://i-blog.csdnimg.cn/blog_migrate/8c46b1f7a69085522ec7f312945f6b08.png)
salesDf.loc[querySer,'商品编码':'销售数量']
![41a6584367694f7e0b4a9eca1f727149.png](https://i-blog.csdnimg.cn/blog_migrate/caee609fee8c23057f16eb4b1b22113b.png)
#多个条件删选
querySer1=salesDf.loc[:,'商品名称']!='感康'
salesDf.loc[querySer1&querySer]
![e185dfaf5b86276b1e6e737aebbbd0ec.png](https://i-blog.csdnimg.cn/blog_migrate/2c252ab5b42264fc83fab6334d57028c.png)
上一章:
Queenie:数据分析1_入门Pythonzhuanlan.zhihu.com![c041e34d8bd936c44e547d2f9b355d1c.png](https://i-blog.csdnimg.cn/blog_migrate/c5097f551a19d5ca560704dd192f66e1.jpeg)