python數據分析

數據整理與預處理
– 數據清洗
– 合併數據集
– 數據轉換
– 重塑和軸向旋轉
– 字符串操做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)

合併重疊數據

重塑和軸向旋轉

數據轉換

  移除重複數據

  利用函數或映射進行數據轉換

  替換

  重命名軸索引

相關文章
相關標籤/搜索