Pandas入门(二)——DataFrame结构及常用操作

继上一篇文章,这篇文章介绍一下Pandas模块里面的DataFrame结构

1. 介绍

DataFrame unifies two or more Series into a single data structure.Each Series then represents a named column of the DataFrame, and instead of each column having its own index, the DataFrame provides a single index and the data in all columns is aligned to the master index of the DataFrame.
这段话的意思是,DataFrame提供的是一个类似表的结构,由多个Series组成,而Series在DataFrame中叫columns(理解有错请指出,(逃~
dataFrame1

2. 相关操作

a.create

pd.DataFrame()
参数:
1、二维array;
2、Series 列表;
3、value为Series的字典;

a.1、二维array

import pandas as pd
import numpy as np

s1=np.array([1,2,3,4])
s2=np.array([5,6,7,8])
df=pd.DataFrame([s1,s2])
print df
    
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

dataFrame二维数组create

a.2、Series列表(效果与二维array相同)

import pandas as pd
import numpy as np

s1=pd.Series(np.array([1,2,3,4]))
s2=pd.Series(np.array([5,6,7,8]))
df=pd.DataFrame([s1,s2])
print df
    
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Series列表

a.3、value为Series的字典结构;

import pandas as pd
import numpy as np

s1=pd.Series(np.array([1,2,3,4]))
s2=pd.Series(np.array([5,6,7,8]))
df=pd.DataFrame({"a":s1,"b":s2});
print df
    
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

value为Series的字典结构
注:若创建使用的参数中,array、Series长度不一样时,对应index的value值若不存在则为NaN

b.属性

b.1 .columns :每个columns对应的keys

b.2 .shape:形状,(a,b),index长度为a,columns数为b

b.3 .index;.values:返回index列表;返回value二维array

b.4 .head();.tail();

c.if-then 操作

c.1使用.ix[]

df=pd.DataFrame({"A":[1,2,3,4],"B":[5,6,7,8],"C":[1,1,1,1]})
df.ix[df.A>1,'B']= -1
print df
    
    
  • 1
  • 2
  • 3

pandas11

df.ix[条件,then操作区域]

c.2使用numpy.where

df=pd.DataFrame({"A":[1,2,3,4],"B":[5,6,7,8],"C":[1,1,1,1]})
df["then"]=np.where(df.A<3,1,0)
print df
    
    
  • 1
  • 2
  • 3

pandas12
np.where(条件,then,else)

d.根据条件选择取DataFrame

d.1 直接取值df.[]

df=pd.DataFrame({"A":[1,2,3,4],"B":[5,6,7,8],"C":[1,1,1,1]})
df=df[df.A>=2]
print df
    
    
  • 1
  • 2
  • 3

pandas13

d.2 使用.loc[]

df=pd.DataFrame({"A":[1,2,3,4],"B":[5,6,7,8],"C":[1,1,1,1]})
df=df.loc[df.A>2]
print df
    
    
  • 1
  • 2
  • 3

(还有很多种方法就不一一列举了)

e.Grouping

e.1groupby 形成group

df = pd.DataFrame({'animal': 'cat dog cat fish dog cat cat'.split(),
                  'size': list('SSMMMLL'),
                  'weight': [8, 10, 11, 1, 20, 12, 12],
                  'adult' : [False] * 5 + [True] * 2});
#列出动物中weight最大的对应size
group=df.groupby("animal").apply(lambda subf: subf['size'][subf['weight'].idxmax()])
print group
    
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

grouping
e.2 使用get_group 取出其中一分组

df = pd.DataFrame({'animal': 'cat dog cat fish dog cat cat'.split(),
                  'size': list('SSMMMLL'),
                  'weight': [8, 10, 11, 1, 20, 12, 12],
                  'adult' : [False] * 5 + [True] * 2});

group=df.groupby("animal")
cat=group.get_group("cat")
print cat
    
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

get_group

其他具体操作请参考CookBook

http://pandas.pydata.org/pandas-docs/stable/cookbook.html

<原创文章,转载请注明出处>

                                            <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/production/markdown_views-68a8aad09e.css">
                                </div>

继上一篇文章,这篇文章介绍一下Pandas模块里面的DataFrame结构

1. 介绍

DataFrame unifies two or more Series into a single data structure.Each Series then represents a named column of the DataFrame, and instead of each column having its own index, the DataFrame provides a single index and the data in all columns is aligned to the master index of the DataFrame.
这段话的意思是,DataFrame提供的是一个类似表的结构,由多个Series组成,而Series在DataFrame中叫columns(理解有错请指出,(逃~
dataFrame1

2. 相关操作

a.create

pd.DataFrame()
参数:
1、二维array;
2、Series 列表;
3、value为Series的字典;

a.1、二维array

import pandas as pd
import numpy as np

s1=np.array([1,2,3,4])
s2=np.array([5,6,7,8])
df=pd.DataFrame([s1,s2])
print df
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

dataFrame二维数组create

a.2、Series列表(效果与二维array相同)

import pandas as pd
import numpy as np

s1=pd.Series(np.array([1,2,3,4]))
s2=pd.Series(np.array([5,6,7,8]))
df=pd.DataFrame([s1,s2])
print df
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Series列表

a.3、value为Series的字典结构;

import pandas as pd
import numpy as np

s1=pd.Series(np.array([1,2,3,4]))
s2=pd.Series(np.array([5,6,7,8]))
df=pd.DataFrame({"a":s1,"b":s2});
print df
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

value为Series的字典结构
注:若创建使用的参数中,array、Series长度不一样时,对应index的value值若不存在则为NaN

b.属性

b.1 .columns :每个columns对应的keys

b.2 .shape:形状,(a,b),index长度为a,columns数为b

b.3 .index;.values:返回index列表;返回value二维array

b.4 .head();.tail();

c.if-then 操作

c.1使用.ix[]

df=pd.DataFrame({"A":[1,2,3,4],"B":[5,6,7,8],"C":[1,1,1,1]})
df.ix[df.A>1,'B']= -1
print df
  
  
  • 1
  • 2
  • 3

pandas11

df.ix[条件,then操作区域]

c.2使用numpy.where

df=pd.DataFrame({"A":[1,2,3,4],"B":[5,6,7,8],"C":[1,1,1,1]})
df["then"]=np.where(df.A<3,1,0)
print df
  
  
  • 1
  • 2
  • 3

pandas12
np.where(条件,then,else)

d.根据条件选择取DataFrame

d.1 直接取值df.[]

df=pd.DataFrame({"A":[1,2,3,4],"B":[5,6,7,8],"C":[1,1,1,1]})
df=df[df.A>=2]
print df
  
  
  • 1
  • 2
  • 3

pandas13

d.2 使用.loc[]

df=pd.DataFrame({"A":[1,2,3,4],"B":[5,6,7,8],"C":[1,1,1,1]})
df=df.loc[df.A>2]
print df
  
  
  • 1
  • 2
  • 3

(还有很多种方法就不一一列举了)

e.Grouping

e.1groupby 形成group

df = pd.DataFrame({'animal': 'cat dog cat fish dog cat cat'.split(),
                  'size': list('SSMMMLL'),
                  'weight': [8, 10, 11, 1, 20, 12, 12],
                  'adult' : [False] * 5 + [True] * 2});
#列出动物中weight最大的对应size
group=df.groupby("animal").apply(lambda subf: subf['size'][subf['weight'].idxmax()])
print group
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

grouping
e.2 使用get_group 取出其中一分组

df = pd.DataFrame({'animal': 'cat dog cat fish dog cat cat'.split(),
                  'size': list('SSMMMLL'),
                  'weight': [8, 10, 11, 1, 20, 12, 12],
                  'adult' : [False] * 5 + [True] * 2});

group=df.groupby("animal")
cat=group.get_group("cat")
print cat
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

get_group

其他具体操作请参考CookBook

http://pandas.pydata.org/pandas-docs/stable/cookbook.html

<原创文章,转载请注明出处>

                                            <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/production/markdown_views-68a8aad09e.css">
                                </div>

猜你喜欢

转载自blog.csdn.net/sinat_36330809/article/details/79799055