python pandas中DataFrame学习笔记

本文章为个人在学习pandas中 DataFrame 部分内容的一些整理 。
注:总结并完全,DataFrame还有更多操作,此文章仅仅是我这几天学习的一点整理。

DataFrame

DataFrame是一个表格型的数据结构,是以一个或多个二维块存放的数据表格(层次化索引),DataFrame既有行索引还有列索引,它有一组有序的列,每列既可以是不同类型(数值、字符串、布尔型)的数据,或者可以看做有Series组成的字典。

类型说明
二维ndarray数据矩阵,还可以传入行标和列标
由数组、列表或元组组成的字典每个序列会变成DataFrame的一列,所有序列的长度必须相同
Numpy的结构化/记录数组类似于“又数组组成的字典”
由Series组成的字典每个Series会成为一列,如果没有显示指定索引,则个Series的索引会被合并(考虑到数字对齐的情况)成结果的行索引
由字典组成的字典各内层字典会成为一列,每个字典的键会被合并成结果的行索引
字典或Series的列表各项将会成为DataFrame的一行,字典键或series索引的并集将会成为DataFrame的列表
由列表或元组组成的列表类似于“二维ndarray”
另一个DataFrame该DataFrame的索引将会被沿用,除非显式指定了其他索引
Numpy的MaskedArray类似于“二维ndarray”的情况,只是掩码值在结果DataFrame会变成NA/缺失值

DataFrame创建

import pandas as pd
import numpy as np
df=pd.DataFrame({'name':['aa','bb','cc'],'pay':[100,200,300]})
print(df)
####
 name  pay
0   aa  100
1   bb  200
2   cc  300

import pandas as pd
import numpy as np
df=pd.DataFrame(np.arange(12).reshape(3,4),index=list('abc'),columns=list('abcd'))
print(df)
####
 a  b   c   d
a  0  1   2   3
b  4  5   6   7
c  8  9  10  11

import pandas as pd
import numpy as np
df=pd.DataFrame({'name':['aa','bb','cc'],'pay':[100,200,300]})
df['add']=[1,2,3]   #增加
print(df)
name  pay  add
0   aa  100    1
1   bb  200    2
2   cc  300    3

##数字对齐,add1中多余的部分会被切掉,而add2中缺少的部分会被NaN值填充

import pandas as pd
import numpy as np
df=pd.DataFrame({'name':['aa','bb','cc'],'pay':[100,200,300]})
value=pd.Series([1,2,3,4,5],index=[0,1,2,3,4])
value1=pd.Series([10,12],index=[0,1])
df['add']=[1,2,3]
df['add1']=value
df['add2']=value1
print(df)
####
 name  pay  add  add1  add2
0   aa  100    1     1  10.0
1   bb  200    2     2  12.0
2   cc  300    3     3   NaN

DataFrame 切片和索引

import pandas as pd
import numpy as np
df=pd.DataFrame({'name':['aa','bb','cc'],'pay':[100,200,300]})
value=pd.Series([1,2,3,4,5],index=[0,1,2,3,4])
value1=pd.Series([10,12],index=[0,1])
df['add']=[1,2,3]
df['add1']=value
df['add2']=value1
print(df[1:3])
####
   name  pay  add  add1  add2
1   bb  200    2     2  12.0
2   cc  300    3     3   NaN

import pandas as pd
import numpy as np
df=pd.DataFrame({'name':['aa','bb','cc'],'pay':[100,200,300]})
value=pd.Series([1,2,3,4,5],index=[0,1,2,3,4])
value1=pd.Series([10,12],index=[0,1])
df['add']=[1,2,3]
df['add1']=value
df['add2']=value1
s=df['name']
print(s)
####
0    aa
1    bb
2    cc
Name: name, dtype: object
import pandas as pd
import numpy as np
df=pd.DataFrame({'name':['aa','bb','cc'],'pay':[100,200,300]})
value=pd.Series([1,2,3,4,5],index=[0,1,2,3,4])
value1=pd.Series([10,12],index=[0,1])
df['add']=[1,2,3]
df['add1']=value
df['add2']=value1
print(df[['name','add']])
####
   name  add
0   aa    1
1   bb    2
2   cc    3
#交换第一列和第二列的值
import pandas as pd
import numpy as np
df=pd.DataFrame({'name':['aa','bb','cc'],'pay':[100,200,300]})
value=pd.Series([1,2,3,4,5],index=[0,1,2,3,4])
value1=pd.Series([10,12],index=[0,1])
df['add']=[1,2,3]
df['add1']=value
df['add2']=value1
df.loc[:,['pay','name']]=df[['name','pay']].values
print(df[['name','pay']])
####
   name pay
0   100  aa
1   200  bb
2   300  cc

loc属性访问:


#基本示例代码及其输出结果  注:由于使用random输出数值,因此后面示例中每次输出的数值都是变化的
import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randn(6,4),index=list('abcdef'),columns=list('ABCD'))
print(df)
####
          A         B         C         D
a -0.109559  0.029060  1.293133 -0.436300
b -0.419417 -1.467318 -0.748838  0.518618
c -1.762349  0.263882 -0.070989  1.153927
d  0.380648 -0.172981  0.737856 -0.039851
e -0.585820 -0.502932 -0.858317 -1.223934
f  1.058826 -0.275914  0.607841  0.407702

按标签选择(loc):

import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randn(6,4),index=list('abcdef'),columns=list('ABCD'))
print(df.loc[['a','b','c'],:])
####
          A         B         C         D
a  1.001830  0.216401  1.625705 -0.169794
b  0.023062 -0.994016 -0.309449  1.272813
c  1.004900  0.825738  0.767043 -0.107114

import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randn(6,4),index=list('abcdef'),columns=list('ABCD'))
print(df.loc['d':,'A':'C'])
####
         A         B         C
d -0.512204 -1.049916  1.340404
e  1.151300  0.826390  0.630450
f  0.950106  0.068678 -0.254349
import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randn(6,4),index=list('abcdef'),columns=list('ABCD'))
print(df.loc['a'])
####
A   -0.677992
B    0.040744
C    0.833783
D   -0.138422
Name: a, dtype: float64
import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randn(6,4),index=list('abcdef'),columns=list('ABCD'))
print(df.loc['a']>0)
####
A    False
B     True
C    False
D    False
Name: a, dtype: bool
import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randn(6,4),index=list('abcdef'),columns=list('ABCD'))
print(df.loc['a','A'])
####
-0.5031521904958901

按位置选择(iloc):

import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randn(6,4),index=list('abcdef'),columns=list('ABCD'))
print(df.iloc[:3])
####
          A         B         C         D
a  0.143855 -1.240150 -0.426173  0.145956
b -1.681027  1.327813 -0.060675 -0.722033
c -0.318719  1.037630  0.229185 -0.328399

import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randn(6,4),index=list('abcdef'),columns=list('ABCD'))
print(df.iloc[1:4,2:4])
####
         C         D
b -0.799387 -0.995885
c  0.912693 -0.492005
d -0.358651  0.963182

import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randn(6,4),index=list('abcdef'),columns=list('ABCD'))
print(df.iloc[[1,3,5],[1,3]])
####
         B         D
b -1.028732  0.386360
d  1.507547  0.108043
f -0.677190  2.200727
import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randn(6,4),index=list('abcdef'),columns=list('ABCD'))
print(df.iloc[1:3,:])
print(df.iloc[2,1])
####
         A         B         C         D
b -0.159791 -0.105850  0.761435  0.778722
c -1.294700 -0.956018  0.038091 -1.121679

-0.9560181811847951

可以对DataFrame进行一些操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值