一.Series对象
1.pandas 的 series对象
data = pd.Series([0.25, 0.5, 0.75, 1.0])
print(data.index) #返回索引
print(data.values) #返回数据
自定义索引:
data = pd.Series([0.25, 0.5, 0.75, 1.0],index=['a', 'b', 'c', 'd'])
2.创建series对象
01. 从列表中创建
pd.Series([2, 4, 6])
02.由标量创建
pd.Series(5, index=[100, 200, 300]) #自动填充,指定索引值
03. 从字典创建
pd.Series({2:'a', 1:'b', 3:'c'})
pd.Series({2:'a', 1:'b', 3:'c'}, index=[3, 2])#指定索引筛选需要的结果
二.Dataframe对象
1.定义
DataFrame是一个表格型的数据结构,既有行索引,也有列索引,可以看作由Series对象组成的字典
b = pd.DataFrame({'name': ['A', 'B', 'C'], 'age': [12, 23, 34]}, columns=['name', 'age'])
print(b.values) #返回二维形式的数组,如果数据类型不一样,那么会自动向上转换成可以兼容所有数据的类型
print(b.columns)
print(b.index)
## 2.创建
## 01.由含有等长列表的字典来创建
```bash
b = pd.DataFrame({'name': ['A', 'B', 'C'], 'age': [12, 23, 34]}, columns=[
'name', 'age'], index=['one', 'two', 'three'])
print(b)#columns指定列的顺序,index指定行索引名称
02.通过 Series 对象字典创建
population=pd.Series(['1000','3000','2000'])
area=pd.Series(['A','B','C'])
pd.DataFrame({'population': population,'area': area})
03.通过 NumPy 二维数组创建
pd.DataFrame(np.random.rand(3, 2),columns=['foo', 'bar'],index=['a', 'b', 'c'])
04.通过 NumPy 结构化数组创建。
A = np.zeros(3, dtype=[('A', 'i8'), ('B', 'f8')])
print(pd.DataFrame(A))
05.通过嵌套字典
data = {
'name': {
'one': 'A',
'two': 'B',
'three': 'C'},
'age': {
'one': 12,
'two': 23,
}}
m = pd.DataFrame(dataindex=['one','two','three'])#可以指定索引,如果不指定则会自己合并排序
print(m)
3.索引的引用
获取列:
b['name']
b.name
获取行:
b.ix['one']
利用索引修改值:
c=pd.Series(['女'],index=['one'])#指定修改值的列及内容
b['sex']=c
添加新列并赋值:
b['height']=['170','160','180']
print(b)
三.Index对象
1.定义:
构建数组或者DataFrame对象时,所用到的标签都会转换成一个Index对象,它不可修改。
2.方法
四.基本方法
1.reindex
method可选参数为
ffill :向前填充
bfill :向后填充
a.reindex(index,columns) #a不会发生变化,生成了一个新的对象
a.ix(index,columns) #index和columns都必须是原有的索引
2.丢弃指定轴
a.drop([index]) #丢弃指定行
a.drop([],axis=1) #丢弃指定列
3.索引,选取和过滤
01.索引
示例:
import pandas as pd
b = pd.DataFrame({'name': ['A', 'B', 'C'], 'age': [12, 23, 34]}, columns=[
'name', 'age', 'sex'], index=[5, 4, 3])
print(b.ix[5:4]) #行索引5到4
print(b.ix[:2, :1]) #前两行,第一列那
print(b.ix[:, 'name']) #name列所有行
print(b.ix[5]) #索引为5的行
print(b.xs(['name'], axis=1)) #默认axis=0,选取name列
4.算术运算
两个Pandas对象进行这些运算时,行和列取并集,所以会有缺省值NAN来填充交集以外的部分,若想用其他值来填充,则可以通过参数fill_value设置,如方法a.add(b,fill_value)
5.函数应用和映射
a.apply(func,axis) #对某个轴应用函数
a.applymap(fmt) #对a所有元素应用某格式
a[column_name].map(fmt) #对a的某一列应用某格式
6.排序
a.sort_index(axis,ascending,by)#by代表按照某一列或者几列进行排序,返回的是一个已排序的对象
a.order() #按值排序
7.带有重复值的轴索引
a.index.is_unique() #判断索引是否唯一
8.统计
a.sum(axis,skipna=False)#skipna是指是否要跳过缺省值
a.describe()#得到多个汇总统计
9.唯一值
a.unique() #将a中的唯一值筛选出来
a.value_counts(sorted=True) #计算a中各值出现的次数
mark=a.isin(list)
a[mark]#筛选a中在list中的值