python数据分析-数据准备

pandas数据结构:

series序列:存储一行或一列的数据,以及与此相关索引的集合。

常用操作方法如下:

from pandas import Series;

#定义,可以混合定义
x = Series(['a', True, 1], index=['first', 'second', 'third']);
x = Series(['a', True, 1]);

#访问
x[1];
#根据index访问
x['second'];

#不能越界访问
x[3]

#不能追加单个元素
x.append('2')
#追加一个序列
n = Series(['2'])
x.append(n)

#需要使用一个变量来承载变化
x = x.append(n)

'2' in x

#判断值是否存在
'2' in x.values

#切片
x[1:3]

#定位获取,这个方法经常用于随机抽样
x[[0, 2, 1]]

#根据index删除
x.drop(0)
x.drop('first')

#根据位置删除
x.drop(x.index[3])

#根据值删除
x['2'!=x.values]
View Code

DataFrame:存储多行多列的数据集合。

常用操作方法如下:

from pandas import DataFrame;

df = DataFrame({
    'age': [21, 22, 23], 
    'name': ['KEN', 'John', 'JIMI']
});

df = DataFrame(data={
    'age': [21, 22, 23], 
    'name': ['KEN', 'John', 'JIMI']
}, index=['first', 'second', 'third']);

df

#按列访问
df['age']
#按行访问
df[1:2]

#按行列号访问
df.iloc[0:1, 0:1] 

#按行索引,列名访问
df.at[0, 'name']

#修改列名
df.columns
df.columns=['age2', 'name2']

#修改行索引
df.index
df.index = range(1,4)
df.index

#根据行索引删除
df.drop(1, axis=0)
#默认参数axis=0
#根据列名进行删除
df.drop('age2', axis=1)

#第二种删除列的方法
del df['age2']

#增加行,注意,这种方法,效率非常低,不应该用于遍历中
df.loc[len(df)] = [24, "KENKEN"];

#增加列
df['newColumn'] = [2, 4, 6, 8];
View Code

程序结构:

分别有顺序结构、选择结构、循环结构。

选择结构例子如下:

"""
if 判断条件:
    执行语句……
else:
    执行语句……
"""

flag = False
name = 'luren'
if name == 'python':         # 判断变量否为'python'
    flag = True          # 条件成立时设置标志为真
    print('welcome boss')    # 并输出欢迎信息
else:
    print(name)              # 条件不成立时输出变量名称
    
    
    
num = 5     
if num == 3:            # 判断num的值
    print('boss')        
elif num == 2:
    print('user')
elif num == 1:
    print('worker')
elif num < 0:           # 值小于零时输出
    print('error')
else:
    print('roadman')     # 条件均不成立时输出
View Code

循环结构例子如下:

# -*- coding: utf-8 -*-
"""
Created on Sat Sep 26 18:55:41 2015

@author: TBKKEN
"""

#!/usr/bin/python
# -*- coding: UTF-8 -*-

from pandas import Series;
from pandas import DataFrame;

for i in range(10):
    print('现在是: ', i)

for i in range(3, 10):
    print(i)

#遍历字符串
for letter in 'Python':
   print ('现在是 :', letter)

#遍历数组
fruits = ['banana', 'apple',  'mango']

for fruit in fruits:
   print ('现在是 :', fruit)

#遍历序列
x = Series(['a', True, 1], index=['first', 'second', 'third']);
x[0];
x['second'];
x[2];

for v in x:
    print("x中的值 :", v);
    
for index in x.index:
    print("x中的索引 :", index);
    print("x中的值 :", x[index]);
    print("---------------------")

#遍历数据框
df = DataFrame({
    'age': Series([21, 22, 23]), 
    'name': Series(['KEN', 'John', 'JIMI'])
});

#遍历列名
for r in df:
    print(r);
    
#遍历列
for cName in df:
    print('df中的列 :\n', cName)
    print('df中的值 :\n', df[cName]);
    print("---------------------")

#遍历行,方法一
for rIndex in df.index:
    print('现在是第 ', rIndex, '')
    print(df.irow(rIndex))

#遍历行,方法二
for r in df.values:
    print(r)
    print(r[0])
    print(r[1])
    print("---------------------")

#遍历行,方法三
for index, row in df.iterrows():
    print('', index, ' 行:')
    print(row)
    print("---------------------")
    
View Code

向量化计算:

定义:向量化计算是一种特殊的并行计算的方式,它可以在同一时间执行多次操作,通常是对不同的数据执行同样的一个或一批指令,或者说把指令应用于一个数组/向量。

# -*- coding: utf-8 -*-
"""
Created on Wed Mar 23 10:13:56 2016

@author: TBKKEN
"""
#生成一个整数的等差序列
#局限,只能用于遍历
r1_10 = range(1, 10, 2)

for i in r1_10:
    print(i)

r1_10 = range(0.1, 10, 2)


#生成一个小数的等差序列
import numpy
numpy.arange(0.1, 0.5, 0.01) 

r = numpy.arange(0.1, 0.5, 0.01) 

#向量化计算,四则运算
r + r
r - r
r * r
r / r

#长短不一时
r + 1

#函数式的向量化计算
numpy.power(r, 5)

#向量化运算,比较运算
r>0.3
#结合过滤进行使用
r[r>0.3]

#矩阵运算
numpy.dot(r, r.T)

sum(r*r)

from pandas import DataFrame
df = DataFrame({
    'data1': numpy.random.randn(5),
    'data2': numpy.random.randn(5)
})

df.apply(lambda x: min(x))

df.apply(lambda x: min(x), axis=1)

#判断每个行,值是否都大于0
df.apply(lambda x: numpy.all(x>0), axis=1)
#结合过滤
df[df.apply(lambda x: numpy.all(x>0), axis=1)]
View Code

 

猜你喜欢

转载自www.cnblogs.com/qiuyuyu/p/9143736.html