數據整理與預處理
– 數據清洗
– 合併數據集
– 數據轉換
– 重塑和軸向旋轉
– 字符串操做python
====================================================數據庫
1、數據清洗dom
缺失值處理socket
刪除記錄函數
數據插補excel
拉格朗日插值法,牛頓插值法,均值,中位數,固定值,迴歸法等對象
不處理索引
異常值處理ip
****************************************************************************utf-8
拉格朗日插值法
# 環境設置
# -*- coding: utf-8 -*-
from __future__ import division
import numpy as np
import os
import matplotlib.pyplot as plt
from scipy.interpolate import lagrange #導入拉格朗日插值函數
np.random.seed(12345)
plt.rc('figure', figsize=(10, 6))
from pandas import Series, DataFrame
import pandas as pd
np.set_printoptions(precision=4, threshold=500)
pd.options.display.max_rows = 100
###缺失值處理——拉格朗日插值法
inputfile = 'C:/python/socket/data/catering_sale.xls' #銷量數據路徑
outputfile = 'C:/python/socket/data/sales.xls' #輸出數據路徑
data = pd.read_excel(inputfile) #讀入數據
data[u'銷量'][(data[u'銷量'] < 400) | (data[u'銷量'] > 5000)] = None
#自定義列向量插值函數
#s爲列向量,n爲被插值的位置,k爲取先後的數據個數,默認爲5
def ployinterp_column(s, n, k=5):
y = s[list(range(n-k, n)) + list(range(n+1, n+1+k))] #取數
y = y[y.notnull()] #剔除空值
return lagrange(y.index, list(y))(n) #插值並返回插值結果
#逐個元素判斷是否須要插值
for i in data.columns:
for j in range(len(data)):
if (data[i].isnull())[j]: #若是爲空即插值。
data[i][j] = ployinterp_column(data[i], j)
data.to_excel(outputfile) #輸出結果,寫入文件
************************************************************************
2、合併數據集
pandas對象
merge方法:根據一個或者多個鍵將不一樣的dataframe中的行合併,同關係型數據庫的join操做
cancat方法:沿一條軸將多個對象堆疊起來,相似數據庫的union操做
數據庫風格的dataframe合併
merge
merge參數:left、right、how、on
索引上的合併
軸向鏈接
#1.inner join
(1)鍵值同樣
df1 = DataFrame({'key': ['b', 'b', 'a', 'c', 'a', 'a', 'b'],'data1': range(7)})
df2 = DataFrame({'key': ['a', 'b', 'd'],'data2': range(3)})
pd.merge(df1, df2)
pd.merge(df1, df2, on='key')
(2)指定鍵值
df3 = DataFrame({'lkey': ['b', 'b', 'a', 'c', 'a', 'a', 'b'],'data1': range(7)})
df4 = DataFrame({'rkey': ['a', 'b', 'd'],'data2': range(3)})
pd.merge(df3, df4, left_on='lkey', right_on='rkey')
2.外連接
(1)全外鏈接
pd.merge(df1, df2, how='outer')
(2)左鏈接
pd.merge(df1, df2, on='key', how='left')
###索引上的合併
#相似key
left1 = DataFrame({'key': ['a', 'b', 'a', 'a', 'b', 'c'],'value': range(6)})
right1 = DataFrame({'group_val': [3.5, 7]}, index=['a', 'b'])
軸向鏈接
arr = np.arange(12).reshape((3, 4))
np.concatenate([arr, arr], axis=1)
合併重疊數據
重塑和軸向旋轉
數據轉換
移除重複數據
利用函數或映射進行數據轉換
替換
重命名軸索引