在数据分析中, 大概需要经历下面几个步骤:一, 数据获取或收集, 可通过多种来源, 如:数据库(需要SQL知识)
各种文件,包括但不限于EXCEL, TXT,CSV,图片,json 等等。
API接口
手工录入等。二, 数据转成相应的数字或离散化,方便提取相应数字特征。
三, 数据的可视化,一般以多个角度,多种形式显示到二维或三维的图象(高维图象不适合理解)。
四,模型的验证,检验,(统计学中有相关的理论)。
五,模型的应用,(如预测等)。
下面的工作需要用PYTHON进行数据分析, 总结常用的基本对象:
1,元组
是一个固定长度, 不可变的对象序列,不可修改对象的值,如果值是一个可变的,可以修改。
创建:
a=4,5,6
b=(4,5,6),(1,2,3)
c = tuple([4,0,2]) 用tuple函数列表转成元组。
d = tuple("string") #('s','t','r'..)
读取:
a[0],b[1]..
x,y,z = a #拆包读取
2,列表
长度可变, 值可以修改的对象序列。
创建:
a = [2,3,4,None]
tup =('foo','bar')
b = list(tup)
gen = range(10)
增加和移除:
a.append('x')
a.insert(1, 'red')
a.pop(2) #移出索引为第2个的元素
a.remove('red') #移出值为 'red' 的元素
搜索:
'red' in a #结果是True
'red' not in a #结果是False
连接和联合:
['a',7,8]+['b',6,3]
[4,5].extend([2,3]) #这个更快
排序:
a.sort() 或 a.sort(key=len)
切片:
a=[1,2,3,4]
a[1:2] #[2]
a[:2] #[1,2]
a[-2:] #[3,4]
a[::-1]#反转
3,字典
关联数组,类似于JSON,以键值对的形式出现, 键必需是不可变的对象。
a = {'a':'some_value','b':'value'}
a[3] = 'add value' #可以添加KEY和值
'a' in a #这里判断是否包含a这个KEY
del a[3] #删除
a.pop(3) #弹出并删除
a.update({'a','b'}) #合并两个字典
dict( (1,2,3),('a','b','c')) #用元组创建字典
4,集合
集合是一个无序,且元素是唯一的容器,(只有键没有值的字典)
a = set([1,2,3])
b = {4,5,6}
并: a|b 或 a.union(b)
交: a&b 或 a.intersection(b)
5,numpy
N维数组对象, 可以在对象的基本上运算,每次改变相当于引用对象指针的计算,会对整个对象影响。
创建:
data = np.array([1,2,3,4,5])
data = np.zeros(10)
data = np.random.randn(2,3)#2*3维的数组
data = np.arange(10) # array([0,1...9])
算术:
可以为numpy对象进行运算。
如:
data * data
data - data
data + data
1/data
data1>data2 #维数相同,可以对比每个元素的大小,反回维数相同的数组,值是TRUE或FALSE
读取或切片:
arr = np.arange(10)
arr[5] # 5
arr[1,0] #取二维数据的值
arr[3:5] #[3,4]
arr[0] #如果arr是一个2*3的数组,返回的是第一行的一维数组
更多参考书
6, series
Series 是一维数组型对象, 即数组+索引的对象。
可以通过索引来查找对应的值,有点象字典, 当在可以用字典直接初始化成Series对象。
如:
s = pd.Series({'a':1,'b':2})
series自身及index都有name属性, 目前很少用的。
如
s.name = 'popule'
s.index.name='quik'
7, dataframe
numpy是多维数组, 而dataframe是表示矩阵的数据表。
Dataframe 数据一般以二维形式存储, 当然也可以使用分层索引来表示更高维数据。
Dataframe 对象的创建:
data = {
'state':['ohio','ohio','ohio'],
'year':[2000,2001,2002],
'pop':[1.5,1.2,1.3]
}
frame = pd.DataFrame(data)