概述
一、pandas的数据结构
1、 pandas处理以下三种数据结构
Series:序列,1D标记均匀数组,大小不变
均匀数组
尺寸大小不变
数据的值不可变
DataFrame:数据帧,2D标记,大小可变的表结构与潜在的异质类型的列
异构数据
大小可变
数据可变
Panel:面板,3D标记,大小可变的数组
异构数据
大小可变
数据可变
这些数据结构是建立在numpy数组之上的。
上面三种数据结构中,较高维度的数组是较低维度数组的容器
二、序列的创建
Pandas创建序列需要使用pandas.Series(data,index, dtype, copy)
data :创建Series的数据可以是各种形式的数据,包括list,tuple,dict,ndarray以及其他object等
index:索引值必须是唯一的和散列的,与数据的长度相同,默认为np.arange(n),
dtype :数据类型,如果没有传值,将会自动推断数据类型
copy : 复制数据
创建一个空序列:
import pandas as pd
s = pd.Series()
print(s)
从list,tuple,dict,ndarray以及其他object等创建序列
import pandas as pd
import numpy as np
data1 = ['a','b','c','d','e']
data2 = ('a','b','c','d','e')
data3 = {'a':1,'b':2,'c':3,'d':4,'e':5}
data4 = np.arange(10)
index = [1,2,3,4,5]
s1 = pd.Series(data=data1,index=index)
s2 = pd.Series(data=data2,index=index)
s3 = pd.Series(data=data3)
s4 = pd.Series(data=data4)
print('create for list', s1)
print('create for tuple', s2)
print('create for dict', s3)
print('create for ndarray', s4)
print('create for list', s1[1])
print('create for tuple', s2[1])
print('create for dict', s3['a'])
print('create for ndarray', s4[1])
字典可以作为输入传递,如果没有指定索引,则按排序顺序取得字典键以构造索引。如果传递了索引,索引与标签对应的数据中的值将会被拉出。
import pandas as pd
import numpy as np
data1 = {'a':1,'b':2,'c':3,'d':4,'e':5}
s = pd.Series(data1,index=['c','d','f','a'])
print(s)
从一个标量中创建一个序列
import pandas as pd
import numpy as np
s = pd.Series(5,index=['c','d','f','a'])
print(s)
从序列中索引数据,有以下几种方式:
1、 基于切片的方式:包括list,基于冒号的正序和逆序
2、 基于index的方式
基于get的方式(与index的区别,使用index方式时,若基于索引的数据不存在,则会报错,但get方式,若基于索引的数据不存在,会返回none)
import pandas as pd
import numpy as np
s = pd.Series([1,2,3,4],index=['c','d','f','a'])
print(s[:2])
print(s[-3:])
print(s['a'])
print('get',s.get('a'))
三、DataFrame创建
DataFrame的特点:
与列表类似,可以标记轴(行和列名)
大小可变
可以对行和列进行算数运算
每一列可以是不同的数据类型
创建DataFrame可以用pandas.DataFrame(data,index, columns, dtype, copy),
data :各种形式的数据,包括ndarray,series,map,list,dict,constant或者DataFrame
index:行标签,与Series一样,没有传值的话,默认为np.arange(n)
columns:列标签,与Series一样,没有传值的话,默认为np.arange(n)
dtype:每一列的数据类型(只对列有效)
copy:默认为False,用此命令用于复制数据
创建一个空的DataFrame
import pandas as pd
import numpy as np
s = pd.DataFrame()
print(s)
创建单列的DataFrame
import pandas as pd
import numpy as np
data = [1,2,3,4,5]
s = pd.DataFrame(data)
print(s)
创建指定列名的DataFrame
import pandas as pd
import numpy as np
data = [['a',1],['b',2],['c',3],['d',4],['e',5]]
s = pd.DataFrame(data,columns=['name','num'])
print(s)
从字典中创建DataFrame
import pandas as pd
import numpy as np
data = {'A':['a',1],'B':['b',2],'C':['c',3],'D':['d',4],'E':['e',5]}
s = pd.DataFrame(data)
print(s)
使用字典来创建DataFrame,是一个很强大的功能,由于字典的特性,字典的每一项的key,在创建成DataFrame时,都会作为DataFrame的列索引,若使用两个不同的dict创建,缺失的值的部分会使用Nan填充;
import pandas as pd
import numpy as np
data = [{'A':['a',1],'B':['b',2],'C':['c',3],'D':['d',4]},{'A':['a',1],'E':['e']}]
s = pd.DataFrame(data)
print(s)
从series中创建DataFrame
import pandas as pd
import numpy as np
s = pd.Series(['a','b','c','d'])
df = pd.DataFrame(s)
print(df)
从字典,序列中创建
import pandas as pd
import numpy as np
s1 = pd.Series(['a','b','c','d'])
s2 = pd.Series(['a','b','c','d'])
d = {'A':s1,'B':s2}
df = pd.DataFrame(d)
print(df)
若需要往DataFrame中添加一列数据,可直接对新的一列赋值的方式增加新一列,但新增加的列的长度,不会因为赋值的列的长度变化而变化
import pandas as pd
import numpy as np
s1 = pd.Series(['a','b','c','d'])
df = pd.DataFrame(s1,columns=['A'])
df['B'] = [1,2,3,4]
print(df)
df['C'] = pd.Series(['a','b','c','d','e'],index=[0,1,2,3,4])
print(df)
列删除
要删除某一列,有两种方式:
1、 直接del
2、Pop删除
import pandas as pd
import numpy as np
s1 = pd.Series(['a','b','c','d'])
df = pd.DataFrame(s1,columns=['A'])
df['B'] = [1,2,3,4]
print(df)
df['C'] = pd.Series(['a','b','c','d','e'],index=[0,1,2,3,4])
print(df)
del df['B']
print(df)
a = df.pop('C')
print(a)
print(df)
上面说的都是列操作,下面说一下行操作
行选择、添加和删除
行选择:
1、 通过行标签索引,需要使用loc
2、 使用行标签的整数行索引,需要使用iloc
3、使用数字切片进行索引
import pandas as pd
import numpy as np
df = pd.DataFrame([['a','b','c','d'],['f','g','h','i'],['a','b','c','d'],['f','g','h','i']],index=['A','B','C','D'],columns=['A','B','C','D'])
print(df)
print(df.loc['A'])
print(df.iloc[0])
print(df[0:2])
附加行
使用append()函数进行添加,返回添加行后的DataFrame
import pandas as pd
import numpy as np
df = pd.DataFrame([['a','b','c','d'],['f','g','h','i'],['a','b','c','d'],['f','g','h','i']],index=['A','B','C','D'],columns=['A','B','C','D'])
print(df)
print('-'*50)
df = df.append(df)
print(df)
删除行
import pandas as pd
import numpy as np
df = pd.DataFrame([['a','b','c','d'],['f','g','h','i'],['a','b','c','d'],['f','g','h','i']],index=['A','B','C','D'],columns=['A','B','C','D'])
print(df)
print('-'*50)
df = df.append(df)
print(df)
print('-'*50)
df = df.drop('A')
print(df)
四、Panel面板
面板是3D容器的数据,面板有3个轴,这3个轴的分别为:
items :axis 0,每个项目对应与内部包含的DataFrame
major_axis:axis 1 ,为每个DataFrame的行索引
minor_axis:axis 2,没每个DataFrame的列索引
创建panel,可使用pandas.Panel(data,items, major_axis, minor_axis, dtype, copy)
创建一个Panelimport pandas as pd
import numpy as np
pl = pd.Panel([[['a','b','c','d'],['f','g','h','i']],[['a','b','c','d'],['f','g','h','i']]],items=['item1','item2'])
print(pl)
print(pl['item1'])
最后
以上就是简单小天鹅为你收集整理的Pandas - 知识点总结(一)的全部内容,希望文章能够帮你解决Pandas - 知识点总结(一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复