python的DataFrame,Series


一、DataFrame初始化

DataFrame,Series属于pandas库

1.1 通过字典初始化

字典的键对应列名,键的值对应列的值。每个键应的值应该是一个list,如果键对应的值只是一个值而不是一个list,就这个列的所有值都是这个键对应的值。

注意所有list的长度应该一样,不能一个list都没有。

d={'a':[1,2,3],'b':[3,3,2],'m':9}

df=DataFrame(d)

df
Out[78]: 
   a  b  m
0  1  3  9
1  2  3  9
2  3  2  9

df['a']
Out[79]: 
0    1
1    2
2    3
Name: a, dtype: int64

type(df['a'])
Out[80]: pandas.core.series.Series

d={'a':[1,2,3],'b':[3,3,2],'m':9}

df=DataFrame(d)

df
Out[83]: 
   a  b  m
0  1  3  9
1  2  3  9
2  3  2  9

1.2 直接初始化

传入一个array,一个array注意外面有[],内部也有[],内部的[]就是一行。使用DataFrame初始化时,可以传入index,否则默认为0,1,2...,可以传入列名,否则也默认为0,1,2...

ar=np.array([
[1,2,3,4],
[4,5,6,7]
])

ar
Out[43]: 
array([[1, 2, 3, 4],
       [4, 5, 6, 7]])

df2=DataFrame(ar,index=['one','two'],columns=['aa','bb','cc','dd'])

df2
Out[45]: 
     aa  bb  cc  dd
one   1   2   3   4
two   4   5   6   7

二、DataFrame的索引

2.1 列索引

(这里使用1.1里的DataFrame对象)

DataFrame对象的每一列都是一个Series对象,比较像List,仍然可以用索引。都可以[:n]直接引用前n个,也可以[n:]直接引用后n个

a=df['a']

type(a)
Out[85]: pandas.core.series.Series

a
Out[86]: 
0    1
1    2
2    3
Name: a, dtype: int64

a[0]
Out[87]: 1

a[:2]
Out[88]: 
0    1
1    2
Name: a, dtype: int64

df[:2]
Out[92]: 
   a  b  m
0  1  3  9
1  2  3  9

三、Series的一些方法

3.1 value_counts()

可以统计列值有多少个

这里a里面的列值有3,2,1三种,每种列值只有一个,所以为1,假如有两个3那么第一行就是3 2了

默认按照列值对应个数降序排列

a.value_counts()
Out[93]: 
3    1
2    1
1    1
Name: a, dtype: int64

四、DataFrame的方法

4.1 pivot_table()

这是python提供的透视表,与excel的透视表类似,与SQL里面的视图很像。

最简单的数据透视表必须有数据帧和索引。

例子:建立了一个如图所示的excel表格,将表格读入python

path=r'C:\Users\nichanglan\Desktop\a.xlsx'
import pandas as pd
import numpy as np
df=pd.read_excel(path)
df
Out[11]: 
      name  age gender  score
0    Alice   15      F     78
1      Dan   12      M     56
2     Hobo   14      M     87
3      Sun   15      F     78
4  Jackson   12      M     76
5      Bob   14      M     87
6    Cancy   13      F     60

建立一个以gender为索引的透视表,建立一个以[gender,name]为索引的透视表:

索引行默认对应的值是均值,如下面的gender为索引的表,默认age,acore都是所有为F或者M对应的均值。

 pd.pivot_table(df,index=['gender'])
Out[12]: 
              age  score
gender                  
F       14.333333   72.0
M       13.000000   76.5

pd.pivot_table(df,index=['gender','name'])
Out[13]: 
                age  score
gender name               
F      Alice     15     78
       Cancy     13     60
       Sun       15     78
M      Bob       14     87
       Dan       12     56
       Hobo      14     87
       Jackson   12     76

默认是均值,当然也可以指定聚合函数aggfunc为np的函数,默认为均值mean。

pd.pivot_table(df,index=['gender'],aggfunc=np.sum)
Out[15]: 
        age  score
gender            
F        43    216
M        52    306

由上表可以知道,除了age,score之外的所有项都显示出来了,当然也可以指定values显示的哪些项,这里只显示age:

pd.pivot_table(df,index=['gender','name'],values=['age'])
Out[14]: 
                age
gender name        
F      Alice     15
       Cancy     13
       Sun       15
M      Bob       14
       Dan       12
       Hobo      14
       Jackson   12

最近较忙,未完待续

4.2 head()

可以传入一个数n,表示获取前n行,与[:n]效果相同,默认获取前5条




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值