day03 数据预处理

数据预处理与标准化技巧
本文详细介绍了一种数据预处理方法,包括如何检测和处理缺失值、筛选非零数据及应用z-score标准化技术。通过具体实例,展示了在Python环境下使用pandas和sklearn库进行数据清洗和标准化的步骤。
# -*- coding: utf-8 -*-

# @File    : deal_null_demo.py
# @Date    :  2020-02-18 16:25
# @Author  : admin
import pandas as pd
from sklearn.cluster import KMeans
#获取数据的null值
def p_max_min_null():
  datafile = '../data/air_data.csv'
  resultfile = 'tmp/explore.xls'
  data = pd.read_csv(datafile, encoding='utf-8')
  explore = data.describe(percentiles=[], include='all').T
  print(explore)
  print(explore['count'])
  #求空值数
  explore['null'] = len(data) - explore['count']
  print(explore['null'] )
  #截取部分列,组成子集
  explore = explore[['null', 'max', 'min']]
  print("===================================")
  print(explore)
  '''
  函数自动计算的字段有count(非空值数)、unique(唯一值数)、top(频数最高者)、
  freq(最高频数)、mean(平均值)、std(方差)、min(最小值)、50 %(中位数)、max(最大值)
  '''
  #获取数据的非0数据
def  p_not_0():
      datafile = '../data/air_data.csv'
      cleanedfile = 'tmp/data_cleaned.csv'
      data = pd.read_csv(datafile, encoding='utf-8')
      #截取显示的部分列
      #print(data[['GENDER',"WORK_PROVINCE"]]);

      #获取票价非零的,或者平均折扣率与总飞行公里数同时为0的记录;
      #1.先获取不为null的数据,在这里换做&运算
      data = data[data['SUM_YR_1'].notnull() & data['SUM_YR_2'].notnull()]
      # 只保留票价非零的,或者平均折扣率与总飞行公里数同时为0的记录。
      #2.再获取不为0的数据
      index1 = data['SUM_YR_1'] != 0
      index2 = data['SUM_YR_2'] != 0
      index3 = (data['SEG_KM_SUM'] == 0) & (data['avg_discount'] == 0)  # 该规则是“与”
      data = data[index1 | index2 | index3]  # 该规则是“或”
      print(data)
#3.数据标准化
def  p_standard():
    datafile = '../data/zscoredata.xls'
    zscoredfile = 'tmp/zscoreddata.xls'
    data = pd.read_excel(datafile)
    # 核心语句,实现标准化变换,类似地可以实现任何想要的变换。
    #根据z-score(标准差)标准化公式zij=(xij-xi)/si,其中zij是标准化后的变量值;
    # xij是实际变量值,xi为变量的算术平均值,si是变量的标准差,进行标准差标准化。
    data = (data - data.mean(axis=0)) / (data.std(axis=0))
    data.columns = ['Z' + i for i in data.columns]
    print(data);
    #data.to_excel(zscoredfile, index=False)





if __name__ == "__main__":
   # p_max_min_null();
   #p_not_0();
   p_standard();
   pass

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值