使用Numpy/Pandas数据处理

数据处理过程介绍

  1. Question Phase 提出想要解决和回答的问题
  2. Wrangle Phase 数据加工,包括数据采集和清洗
  3. Explore Phase 数据探索,熟悉数据并找出模式
  4. Draw Conclusions Phase (or make predictions) 总结或者预测数据,需要统计或者机器学习等
  5. Communicate Phase 交流研究成果,博客,论文邮件… 数据可视化是比较有效的方法
一维数据np.array
a=np.array([1,2,3,4,5])
b=np.array([False,False,True,True,True])  #index array
a[b]
a[a>2]
import numpy as np

a = np.array([1,2,3,4])
b=a
a += np.array([1,1,1,1])  #operate in-place  也就是将新值存在原来位置,大多不是operate in-place
print b     #array([2,3,4,5])

a = np.array([1,2,3,4])
b=a
a = a + np.array([1,1,1,1]) #创建新的数组保存数值
print b     #array([1,2,3,4])

b = [1,2,3,4,5]
slice1 = b[:3]
slice1[0] = 100
print b  #[1,2,3,4,5]  由于slice1是新开的数组,所以b保持原样

a = np.array([1,2,3,4,5])
slice = a[:3]
slice[0] = 100
print a #array([100,2,3,4,5])  np.array 不同于python list 它是直接在原数组操作,提高效率。切片时候多留意

一维数据pd.series
import pandas as pd
life_expectancy = pd.Series([66.0, 40.4, 45., 100.2],
                            index=['Albania',
                                   'Algeria',
                                   'Andorra',
                                   'Angola']

)

life_expectancy.loc['Angola']
life_expectancy.iloc[0]  # 注意位置和索引的区别。

二维数据
Python: List of lists
NumPy: 2D array
Pandas: DataFrame
import pandas as pd

# Subway ridership for 5 stations on 10 different days
ridership_df = pd.DataFrame(
    data=[[   0,    0,    2,    5,    0],
          [1478, 3877, 3674, 2328, 2539],
          [1613, 4088, 3991, 6461, 2691],
          [1560, 3392, 3826, 4787, 2613],
          [1608, 4802, 3932, 4477, 2705],
          [1576, 3933, 3909, 4979, 2685],
          [  95,  229,  255,  496,  201],
          [   2,    0,    1,   27,    0],
          [1438, 3785, 3589, 4174, 2215],
          [1342, 4043, 4009, 4665, 3033]],
    index=['05-01-11', '05-02-11', '05-03-11', '05-04-11', '05-05-11',
           '05-06-11', '05-07-11', '05-08-11', '05-09-11', '05-10-11'],
    columns=['R003', 'R004', 'R005', 'R006', 'R007']
)

def clean_state(s):
     ...

df.applymap(clean_state)

import pandas as pd

s = pd.Series([1, 2, 3, 4])
df = pd.DataFrame({
    0: [10, 20, 30, 40],
    1: [50, 60, 70, 80],
    2: [90, 100, 110, 120],
    3: [130, 140, 150, 160]
})

print df + s    #s与df每列相加,即1与第一列每个元素相加,2与第二列每个元素相加,以此类推。
print df.add(s, axis="columns")  #df+s 可指定轴参数

s1 = pd.Series([1, 2, 3, 4], index=('b','c','d','e'))
df1 = pd.DataFrame({
    a: [10, 20, 30, 40],
    b: [50, 60, 70, 80],
    c: [90, 100, 110, 120],
    d: [130, 140, 150, 160]
})

print df1 + s1     #s1与df1每列相加,series索引值需与dataFrame列名匹配。