24:numpy:预处理
https://www.jianshu.com/p/83c8ef18a1e8
安装pip: https://jingyan.baidu.com/album/ff42efa9d630e5c19e220207.html?picindex=1
安装模块:
import numpy as np
arr1 =np.array([2,3,4])
print( arr1)
print ( arr1.dtype)
#int 32 整形
#获取数据类型
arr2 = np.array([ 1.2, 2.3 , 3.4])
#
print( arr2)
#列表计算
print( arr2.dtype)
#float64
print ( arr1 + arr2)
#
print( arr2 * 10 )
#
#
data = [[1,2,3], [4,5,6]]
arr3 = np.array(data)
print( arr3)
print ( arr3.dtype)
print ( arr3.shape)
#
#0矩阵 3行5列
print (np.zeros((3,5)))
#1矩阵 4行6列
print( np.ones((4,6)))
#生成随机矩阵
print(np.empty((2,3,2)))
#建数组
arr4 = np.arange(10)
#5到8 替换值
arr4[5:8] = 10
print(arr4)
#copy
arr_slice = arr4[5:8].copy()
#全部替换
arr_slice[:] = 15
print(arr_slice)
print(arr4)
25:pandas
Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法.
from pandas import Series, DataFrame
import pandas as pd
obj = Series([4, 5, 6, -7])
#print(obj)
#
# print( obj.index)
#
# print ( obj.values)
#
#key不能时序列
# {['a']:1}
#
obj2 = Series([4, 7, -5, 3], index=['d', 'b', 'c', 'a'])
#print(obj2)
#修改对于的value
# obj2['c'] = 6
#
# print(obj2)
#
# print ('f' in obj2)
sdata = {
'beijing': 35000,
'shanghai': 71000,
'guangzhou': 16000,
'shenzhen': 5000}
obj3 = Series(sdata)
#print( obj3)
#修改key
obj3.index = ['bj', 'gz', 'sh', 'sz']
#
#print( obj3)
data = {'city': ['shanghai', 'shanghai', 'shanghai', 'beijing', 'beijing'],
'year': [2016, 2017, 2018, 2017, 2018],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
#字典传化 多维数组
frame = DataFrame(data)
#排序 年 城西 pop
frame2 = DataFrame(data, columns=['year', 'city', 'pop'])
#print(frame)
#
#print(frame2)
#
# print(frame2['city'])
# print(frame2.year)
#新加一列 并都赋值100
frame2['new'] = 100
#print(frame2)
#新加一列 并判断city是否时beijing
frame2['cap'] = frame2.city == 'beijing'
#print( frame2)
pop = {'beijing': {2008: 1.5, 2009: 2.0},
'shanghai': {2008: 2.0, 2009: 3.6}
}
frame3 = DataFrame(pop)
#print(frame3)
#T用于坐标互换 二维数组
#print(frame3.T)
obj4 = Series([4.5, 7.2, -5.3, 3.6], index=['b', 'd', 'c', 'a'])
#根据该索引排序 并且nan的值设置为0
obj5 = obj4.reindex(['a', 'b', 'c', 'd', 'e'], fill_value=0)
#print(obj5)
#设置key 024 以及value的数组
obj6 = Series(['blue', 'purple', 'yellow'], index=[0, 2, 4])
#输出range为6的 value 并向下补全 ffill向上补全
#print( obj6.reindex(range(6),method='ffill'))
from numpy import nan as NA
data = Series([1, NA, 2])
#删除缺失值dropna NAN
#print(data)
#print(data.dropna())
data2 = DataFrame([[1., 6.5, 3], [1., NA, NA], [NA, NA, NA]
])
#新加一列 4 并赋缺失
data2[4] = NA
#print(data2)
#删除整行都是缺失值
#print(data2.dropna(how='all'))
#整列都是缺失值的删除
#print(data2.dropna(axis=1, how='all'))
#
#data2.fillna(0)
#将缺失值赋值为0 输出
#print(data2.fillna(0, inplace=True))
#print(data2)
#层次化索引()
import numpy as np
data3 = Series(np.random.randn(10),
index=[['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd', 'd'],
[1, 2, 3, 1, 2, 3, 1, 2, 2, 3]])
print(data3)
#转化为二维数据DataFrame
print(data3.unstack())
#二维数据再转化回来。
print(data3.unstack().stack())
#输出b到c 的数据
print(data3['b':'c'])