我是靠谱客的博主 简单小天鹅,最近开发中收集的这篇文章主要介绍Pandas - 知识点总结(一),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、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)

创建一个Panel
import 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 - 知识点总结(一)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部