第三小节 小数定标标准化数据
一、公式
X*=X/10^k(其中k由数据绝对值最大的那个数的位数去确认的)
二、总结 适用程度
离差标准化<小数定标标准化<li c
第三小节 小数定标标准化数据
一、公式
X*=X/10^k(其中k由数据绝对值最大的那个数的位数去确认的)
二、总结 适用程度
离差标准化<小数定标标准化<li c
确定分类的数量
如何将连续型的数据映射到我们的类别型数据
离散化连续型数据的方法
等宽法 cut函数 对数据要求比较高 损坏模型
等频法
聚类分析法
空间距离计算
梯度下降法
消除特征之间或者量纲的差异
第三节 标准化数据
第一小节 离差标准化数据
1.离差标准化公式
X*=(X-min)/(max-min)
缺点:若数据集中某个数值很大,则离差标准化的值就会接近于0,并且相互之间差别不大。若将来遇到超过目前属性[min,max]取值范围的时候,会引起系统出错,需重新que
第三小节 重叠合并数据
combine_first方法
一、介绍
当两份数据的内容几乎一致,但某些特征在其中一张表上是完整的恶,而在另外一张表上的数据则是完整的
二、具体用法
pandas.DataFrame.combine_first(other)
其中other表示参与重叠合并的另一个dataframe
timedelta就是一个时间间隔单位
可以被时间的加减获得
dataindex有weekname
periodindex有weekday(单独的天)
timestamp可以做value acount的统计
read_csv
to_csv
reshape(size)
展平ravel
flatten() flatten('F')
hstack/vstack
concatenate 1/0
hsplit/vsplit
split 1/0
随机数的生成:np.random.xxx
xxx:
random
rand
randn
randint(min,max,size=())
import pandas as pd
import os
os.chdir(r'C:\Users\Administrator\Desktop\数据预处理')
data=pd.read_csv('data/task-1A.csv',encoding='GBK')
1.生成随机数
np.random.random(100). #输出100个无约束条件的随机数组
np.random.rand(10, 5). #输出10行5列的均匀步长的随机数组
np.random.randn(10,5) #输出10行5列正态分布的随机数组
np.random.randint(2,10,size=[2,5]) #输出最低值不低于2最大值不高于10的2行5列的随机数组
2.random模块常用随机数生成函数
seed permutation shuffle binomial normal beta chisquare gamma uniform
## 使用访问字典方式取出orderInfo中的某一列
order_id = detail['order_id']
字典就是加中括号
属性就是加.
print('订单详情表中的order_id的形状为:','\n',order_id.shape)
Spyder的读取数据可以有工作空间
对单列的访问
对单列某几行的访问
对多列的访问
对多列的某几行的访问
对所有列的某几行访问 用:或者.head(12)/tail
loc/iloc的差别
取行的时候 loc前闭后闭
iloc前闭后开
ix融合loc和iloc
更改dataframe数据(取出再修改)
增添数据到dataframe(新增的一列值是相同的则直接赋值一个常量即可)
删除某列或某行
inplace
pd.DataFrame(Series).drop_duplicates(self,subset=None,keep='first',inplace=False)
inplace接收Boolean,表示是否在原表上进行操作
1.特征重复:去除连续型特征重复可以利用特征间的相似度讲两个相似度为1的特征去除1个。
计算方法:corr
缺点:类别型特征之前无法通过计算相似系数来衡量相似度
DataFrame.equals 方法进行特征去重。
set会改变原来的顺序。
order5=detail[:][1:6]
loc,iloc访问方式(查看访问中的数据)
loc方法是针对DataFrame索引名称的切片方法。闭区间。
iloc必须是行索引和列索引的位置。前闭后开。
ix两者结合。存在重叠时优先识别索引名称。
dishes_name1=detail.loc[:,'dishes_name']
#detail['dishes_name']
DataFrame.groupby(by=?,axis=0,
直接排序 arr.sort() axis沿横纵轴排序
间接排序 arr.argsort np.lexsort((a,b,c))
np.random.seed(42)
arr=np.random.randint(1,10,size=10)
arr.sort()
arr
arr=np.random.randint(1,10,size=(3,3))
arr.sort(axis=1) 0
unique
tile(A,reps) 对数组进行重复操作
repeat(a,repeats,axis=None)对数组的每个元素进行重复
0按行进行元素重复
1按列进行元素重复
一. 排序:
1. 数组变动
arr.sort(axis=0)
axis=0 纵轴,每一列单独排序;xis=1横轴
2. 数组不变
arr.argsort()返回排序后的值对应在原数组的位置
np.lexsort((a,b,c))返回值按照最后一个传入数据排序,a,b,c为数组,按c由小到大排序,a和b分别取对应的位置的值与c的值组成().
二. 去重
1. arr.unique()返回不含重复值且排序后的结果
2. np.tile(A,reps) 将数组A重复reps次
3. arr.repeat(reps,axis=None)将arr元素重复reps次,axis=0表示按行进行元素重复,该行下一行就是重复的行。axis=1表示按列进行
三. 常见统计函数
sum(axis=0) 按纵轴求和返回数组
mean
std 标准差
var
min
max
argmin返回最小值的索引
argmax
cumsum所有元素和
cumprod所有元素积
import numpy as np
import matplotlib.pyplot as plt
data = np.load('C:/Users/Administrator/Desktop/数据/国民经济核算季度数据.npz')
name = data['columns'] # 提取其中的columns数组,视为数据的标签
values = data['values'] # 提取其中的values数组,数据的存在位置
plt.rcParams['font.sans-serif'] = 'SimHei' # 设置中文显示
plt.rcParams['axes.unicode_minus'] = False
# 散点图
label1 = ['第一产业', '第二产业', '第三产业'] # 刻度标签1
label2 = ['农业', '工业', '建筑', '批发', '交通', '餐饮', '金融', '房地产', '其他'] # 刻度标签2
p = plt.figure(figsize=(12, 12))
# 散子图1
ax1 = p.add_subplot(2, 2, 1)
plt.bar(range(3), values[0, 3:6], width=0.5) # 绘制散点图
plt.xlabel('产业') # 添加横轴标签
plt.ylabel('生产总值(亿元)') # 添加y轴名称
plt.xticks(range(3), label1)
plt.title('2000年第一季度国民生产总值产业构成分布直方图')
# 散子图2
ax2 = p.add_subplot(2, 2, 2)
plt.bar(range(3), values[-1, 3:6], width=0.5) # 绘制散点图
plt.xlabel('产业') # 添加横轴标签
plt.ylabel('生产总值(亿元)') # 添加y轴名称
plt.xticks(range(3), label1)
plt.title('2017年第一季度国民生产总值产业构成分布直方图')
# 散子图3
ax3 = p.add_subplot(2, 2, 3)
plt.bar(range(9), values[0, 6:], width = 0.5) # 绘制散点图
plt.xlabel('行业') # 添加横轴标签
plt.ylabel('生产总值(亿元)') # 添加y轴名称
plt.xticks(range(9), label2)
plt.title('2000年第一季度国民生产总值行业构成分布直方图') # 添加图表标题
# 散子图4
ax4 = p.add_subplot(2, 2, 4)
plt.bar(range(9), values[-1, 6:], width = 0.5) # 绘制散点图
plt.xlabel('行业') # 添加横轴标签
plt.ylabel('生产总值(亿元)') # 添加y轴名称
plt.xticks(range(9), label2)
plt.title('2017年第一季度国民生产总值行业构成分布直方图') # 添加图表标题
# 保存并显示图形
plt.savefig('./国民生产总值构成分布直方图.png')
# 饼图
label1 = ['第一产业', '第二产业', '第三产业'] # 标签1
label2 = ['农业', '工业', '建筑', '批发', '交通',
'餐饮', '金融', '房地产', '其他'] # 标签2
explode1 = [0.01, 0.01, 0.01]
explode2 = [0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01]
p2 = plt.figure(figsize=(12, 12))
# 饼子图1
a1 = p2.add_subplot(2, 2, 1)
plt.pie(values[0, 3:6], explode=explode1, labels=label1,
autopct='%1.1f%%') # 绘制散点图
plt.title('2000年第一季度国民生产总值产业构成分布饼图')
# 饼子图2
a2 = p2.add_subplot(2, 2, 2)
plt.pie(values[-1, 3:6], explode=explode1, labels=label1,
autopct='%1.1f%%') # 绘制散点图
plt.title('2017年第一季度国民生产总值产业构成分布饼图')
# 饼子图3
a3 = p2.add_subplot(2, 2, 3)
plt.pie(values[0, 6:], explode=explode2, labels=label2,
autopct='%1.1f%%') # 绘制散点图
plt.title('2000年第一季度国民生产总值行业构成分布饼图') # 添加图表标题
# 饼子图4
a4 = p2.add_subplot(2, 2, 4)
plt.pie(values[-1, 6:], explode=explode2, labels=label2,
autopct='%1.1f%%') # 绘制散点图
plt.title('2017年第一季度国民生产总值行业构成分布饼图') # 添加图表标题
# 保存并显示图形
plt.savefig('./国民生产总值构成分布饼图.png')
# 箱线图
label1 = ['第一产业', '第二产业', '第三产业'] # 标签1
label2 = ['农业', '工业', '建筑', '批发', '交通',
'餐饮', '金融', '房地产', '其他'] # 标签2
gdp1 = (list(values[:, 3]), list(values[:, 4]), list(values[:, 5]))
gdp2 = ([list(values[:, i]) for i in range(6, 15)])
p3 = plt.figure(figsize=(8, 8))
# 箱子图1
b1 = p3.add_subplot(2, 1, 1)
# 绘制箱线图
plt.boxplot(gdp1, notch=True, labels=label1, meanline=True)
plt.title('2000-2017各产业国民生产总值箱线图')
plt.ylabel('生产总值(亿元)') # 添加y轴名称
# 箱子图2
b2 = p.add_subplot(2, 1, 2)
# 绘制箱线图
plt.boxplot(gdp2, notch=True, labels = label2, meanline=True)
plt.title('2000-2017各行业国民生产总值箱线图')
plt.xlabel('行业') # 添加横轴标签
plt.ylabel('生产总值(亿元)') # 添加y轴名称
# 保存并显示图形
plt.savefig('./国民生产总值分散情况箱线图.png')
plt.show()
import numpy as np
import matplotlib.pyplot as plt
data = np.load('C:/Users/Administrator/Desktop/数据/国民经济核算季度数据.npz')
name = data['columns'] # 提取其中的columns数组,视为数据的标签
values = data['values'] # 提取其中的values数组,数据的存在位置
plt.rcParams['font.sans-serif'] = 'SimHei' # 设置中文显示
plt.rcParams['axes.unicode_minus'] = False
# 散点图
label1 = ['第一产业', '第二产业', '第三产业'] # 刻度标签1
label2 = ['农业', '工业', '建筑', '批发', '交通', '餐饮', '金融', '房地产', '其他'] # 刻度标签2
p1 = plt.figure(figsize=(12, 12))
# 散子图1
ax1 = p1.add_subplot(2, 2, 1)
plt.bar(range(3), values[0, 3:6], width=0.5) # 绘制散点图
plt.xlabel('产业') # 添加横轴标签
plt.ylabel('生产总值(亿元)') # 添加y轴名称
plt.xticks(range(3), label1)
plt.title('2000年第一季度国民生产总值产业构成分布直方图')
# 散子图2
ax2 = p1.add_subplot(2, 2, 2)
plt.bar(range(3), values[-1, 3:6], width=0.5) # 绘制散点图
plt.xlabel('产业') # 添加横轴标签
plt.ylabel('生产总值(亿元)') # 添加y轴名称
plt.xticks(range(3), label1)
plt.title('2017年第一季度国民生产总值产业构成分布直方图')
# 散子图3
ax3 = p1.add_subplot(2, 2, 3)
plt.bar(range(9), values[0, 6:], width = 0.5) # 绘制散点图
plt.xlabel('行业') # 添加横轴标签
plt.ylabel('生产总值(亿元)') # 添加y轴名称
plt.xticks(range(9), label2)
plt.title('2000年第一季度国民生产总值行业构成分布直方图') # 添加图表标题
# 散子图4
ax4 = p1.add_subplot(2, 2, 4)
plt.bar(range(9), values[-1, 6:], width = 0.5) # 绘制散点图
plt.xlabel('行业') # 添加横轴标签
plt.ylabel('生产总值(亿元)') # 添加y轴名称
plt.xticks(range(9), label2)
plt.title('2017年第一季度国民生产总值行业构成分布直方图') # 添加图表标题
# 保存并显示图形
plt.savefig('./国民生产总值构成分布直方图.png')
# 饼图
label1 = ['第一产业', '第二产业', '第三产业'] # 标签1
label2 = ['农业', '工业', '建筑', '批发', '交通',
'餐饮', '金融', '房地产', '其他'] # 标签2
explode1 = [0.01, 0.01, 0.01]
explode2 = [0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01]
p2 = plt.figure(figsize=(12, 12))
# 饼子图1
a1 = p2.add_subplot(2, 2, 1)
plt.pie(values[0, 3:6], explode=explode1, labels=label1,
autopct='%1.1f%%') # 绘制散点图
plt.title('2000年第一季度国民生产总值产业构成分布饼图')
# 饼子图2
a2 = p2.add_subplot(2, 2, 2)
plt.pie(values[-1, 3:6], explode=explode1, labels=label1,
autopct='%1.1f%%') # 绘制散点图
plt.title('2017年第一季度国民生产总值产业构成分布饼图')
# 饼子图3
a3 = p2.add_subplot(2, 2, 3)
plt.pie(values[0, 6:], explode=explode2, labels=label2,
autopct='%1.1f%%') # 绘制散点图
plt.title('2000年第一季度国民生产总值行业构成分布饼图') # 添加图表标题
# 饼子图4
a4 = p2.add_subplot(2, 2, 4)
plt.pie(values[-1, 6:], explode=explode2, labels=label2,
autopct='%1.1f%%') # 绘制散点图
plt.title('2017年第一季度国民生产总值行业构成分布饼图') # 添加图表标题
# 保存并显示图形
plt.savefig('./国民生产总值构成分布饼图.png')
# 箱线图
label1 = ['第一产业', '第二产业', '第三产业'] # 标签1
label2 = ['农业', '工业', '建筑', '批发', '交通',
'餐饮', '金融', '房地产', '其他'] # 标签2
gdp1 = (list(values[:, 3]), list(values[:, 4]), list(values[:, 5]))
gdp2 = ([list(values[:, i]) for i in range(6, 15)])
p3 = plt.figure(figsize=(8, 8))
# 箱子图1
b1 = p3.add_subplot(2, 1, 1)
# 绘制箱线图
plt.boxplot(gdp1, notch=True, labels = label1, meanline=True)
plt.title('2000-2017各产业国民生产总值箱线图')
plt.ylabel('生产总值(亿元)') # 添加y轴名称
# 子图2
b2 = p.add_subplot(2, 1, 2)
# 绘制箱线图
plt.boxplot(gdp2, notch=True, labels = label2, meanline=True)
plt.title('2000-2017各行业国民生产总值箱线图')
plt.xlabel('行业') # 添加横轴标签
plt.ylabel('生产总值(亿元)') # 添加y轴名称
# 保存并显示图形
plt.savefig('./国民生产总值分散情况箱线图.png')
plt.show()