Python 数据分析包:pandas 基础
pandas 是基于 Numpy 构建的含有更高级数据结构和工具的数据分析包 ,pandas主要是围绕series和DataFrame进行操作。
series
series可以看做为一个字典,其中包含index和data ,index可以为我们自己进行定义的。series主要定义一维数组。首先要导入pandas模块,基本定义方式如下:
import pandas as pd
from pandas import DataFrame,Series #导入模块
serises = Series([1,2,3],index = ['a','b','c'])
print(serises)
a 1
b 2
c 3
dtype: int64
如果data类型是多种的话dtype为:object
serises = Series([1,'a',5],index = ['a','d','e'])
print(serises)
a 1
d a
e 5
dtype: object
在操作中最好保持一种数据类型。
series属性
series有两个属性一个为value另一个为index,value和index是相互对应的,在定义series是一般会定义index,默认为0,1,2
serises = Series([1,2,3,4,5],index = ['a','b','c','d','e'])
serises.values
array([1, 2, 3, 4, 5], dtype=int64)
serises.index
Index(['a', 'b', 'c', 'd', 'e'], dtype='object')
通过ndarray创建一个系列
#通过ndarray创建一个系列
data = np.array(['a','b','c','d',5,6,np.NaN,10.0])
ser02 = pd.Series(data)
print(data)
print(ser02)
['a' 'b' 'c' 'd' '5' '6' 'nan' '10.0']
0 a
1 b
2 c
3 d
4 5
5 6
6 nan
7 10.0
dtype: object
Series 对象的元素会严格依照给出的 index 构建,这意味着:如果 data 参数是有键值对的,那么只有 index 中含有的键会被使用;以及如果 data 中缺少响应的键,即使给出 NaN 值,这个键也会被添加。
添加index所以以及name
serises = Series([1,2],index = ['a','b'])
serises.name = '6'
serises.index.name = 'f'
f
a 1
b 2
Name: 6, dtype: int64
DataFrame
DataFrame 是一个表格型的数据结构,它含有一组有序的列(类似于index),每列可以是不同的值类型(不像 ndarray 只能有一个 dtype)。基本上可以把 DataFrame 看成是共享同一个 index 的 Series 的集合
首先创建一个空的DataFrame
import pandas as pd
from pandas import DataFrame,Series
import numpy as np
df = pd.DataFrame()
print(df)
Empty DataFrame
Columns: []
Index: []
可以通过一个二维数组进行创建
arr = np.array([['好了','早上'],
['号楼','你好'],
['好的','网上']])
df = pd.DataFrame(arr,index = ['c','a','b'],columns = ['sd','78'])
print(df)
sd 78
c 好了 早上
a 号楼 你好
b 好的 网上
通过字典进行创建
dict1 = {'age':[12,23,34,45],
'name':['小宁','小红','小兰','小花'],
'sex':['男','女','男','女']}
df1 = pd.DataFrame(dict1,index = ['a','e','w','r'])
print(df1)
age name sex
a 12 小宁 男
e 23 小红 女
w 34 小兰 男
r 45 小花 女
选择列以及增加列:
选择列:
df1['age']
a 12
e 23
w 34
r 45
Name: age, dtype: int64
增加列:
df1['address'] = ['上海','北京','杭州','天津']
print(df1)
age name sex address
a 12 小宁 男 上海
e 23 小红 女 北京
w 34 小兰 男 杭州
r 45 小花 女 天津
列删除:
df1.pop('address')
a 上海
e 北京
w 杭州
r 天津
Name: address, dtype: object
print(df1)
age name sex
a 12 小宁 男
e 23 小红 女
w 34 小兰 男
r 45 小花 女
行选择、行增加、行删除:
df1.ix['a']
age 12
name 小宁
sex 男
Name: a, dtype: object
df1.ix['d'] = ['24','小韩','男']
print(df1)
age name sex
a 12 小宁 男
e 23 小红 女
w 34 小兰 男
r 45 小花 女
d 24 小韩 男
df1.drop('d')
age name sex
a 12 小宁 男
e 23 小红 女
w 34 小兰 男
r 45 小花 女