pandas中size方法_十分钟入门pandas(中)【解读pandas官方文档】

接着前文继续

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))

df

缺失值处理

重新索引允许您更改/添加/删除指定轴上的索引。 这将返回数据的副本。

df1 = df.reindex(index=dates[0:4], columns=list(df.columns) + ['E'])

df1.loc[dates[0]:dates[1],'E'] = 1

df1

注:增加了一个新列E,并且给E列第一行和第二行数据赋值为1,则没赋值的数据显示不存在。

删除存在缺失值的行:

df1.dropna(how='any')

填充缺失值:

df1.fillna(value=5)

注:这里使用5去填充,实际中,我们做数据分析常用0,中位数,平均数来填充。

查看空值数据:

pd.isnull(df1)

注:返回True的是空值数据

操作

统计

操作中一般不包含丢失的数据

执行描述性统计:

df.mean() #求每列平均值

df.mean(1) #每行求平均值

Apply

将功能用于处理数据

df.apply(np.cumsum)

注:列累加,就是第二列的结果等于第一列加第二列数据,依次累加。

使用匿名函数求每列的最大值和最小值的差:

df.apply(lambda x: x.max() - x.min())

直方图化

s = pd.Series(np.random.randint(0, 7, size=10))

s

注:在0-7中随机产生10个整数

s.value_counts()

注:对数据进行计数

操作字符串的方法

字符串方法

Series中配置了一组字符串处理方法,使其易于在数组的每个元素上进行操作,如下面的代码片段所示。请注意,str中的模式匹配通常默认使用正则表达式(在某些情况下始终使用它们)。 在矢量化字符串方法中查看更多:http://pandas.pydata.org/pandas-docs/version/0.20/text.html#text-string-methods

s = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca', np.nan, 'CABA', 'dog', 'cat'])

注:创建一个Series

s.str.lower()

注:把其中所有的英文字母变成小写

合并

字符连接

将pandas对象用concat()连接在一起

df = pd.DataFrame(np.random.randn(10, 4))

df

注:产生一个10行4列的标准正态分布

pieces = [df[:3], df[3:7], df[7:]]

pieces

注:切成三块

pd.concat(pieces)

注:将碎块合并

join加入操作

left = pd.DataFrame({'key': ['foo', 'foo'], 'lval': [1, 2]})

left

right = pd.DataFrame({'key': ['foo', 'foo'], 'rval': [4, 5]})

right

注:使用dict的方式创建两个dataframe

pd.merge(left, right, on='key')

注:连接之后的效果如上图,有点像笛卡尔积操作。

另外举个例子:

left = pd.DataFrame({'key': ['foo', 'bar'], 'lval': [1, 2]})

left

right = pd.DataFrame({'key': ['foo', 'bar'], 'rval': [4, 5]})

right

pd.merge(left, right, on='key')

Append

df = pd.DataFrame(np.random.randn(8, 4), columns=['A','B','C','D'])

df

s = df.iloc[3]

df.append(s, ignore_index=True)

注:将第三行复制一份添加到了最后一行(增加了一行)

分组

通过“group by”,我们指的是涉及一个或多个以下步骤的过程:

1.根据一些标准将数据分成组

2.将功能独立应用于每个组

3.将结果合并成数据结构

df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',

'foo', 'bar', 'foo', 'foo'],

'B' : ['one', 'one', 'two', 'three',

'two', 'two', 'one', 'three'],

'C' : np.random.randn(8),

'D' : np.random.randn(8)})

df

注:生成了一个数据框

分组,然后对结果组应用函数求和:

df.groupby('A').sum()

注:通过A列中的数据分组,A列中只有bar和foo,所以分为两组,求和时候因为只有C/D列是数字,所以只应用在C/D列上求和

按多个列分组形成一个分层索引,然后我们应用函数:

df.groupby(['A','B']).sum()

注:相当于在根据A列分组的基础上在B列细分,再求和

资料重塑

请参阅有关分层索引和资料重塑的部分:

Stack堆

tuples = list(zip(*[['bar', 'bar', 'baz', 'baz',

'foo', 'foo', 'qux', 'qux'],

['one', 'two', 'one', 'two',

'one', 'two', 'one', 'two']]))

tuples

注:创建了一个list,并且用zip方法整合合并成内部是tuple形式

index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])

index

注:将数据转为MultiIndex结构,即从字面上理解为多索引结构

df = pd.DataFrame(np.random.randn(8, 2), index=index, columns=['A', 'B'])

df

df2 = df[:4]

注:取出前四行数据

stack()方法“压缩”DataFrame的列。

stacked = df2.stack()

stacked

使用“堆叠”DataFrame或Series(具有MultiIndex作为索引),stack()的反向操作是unpack(),它默认情况下解除最后一个级别

unstack会默认多层索引的series转变为DataFrame

stacked.unstack()

stacked.unstack(1)

stacked.unstack(0)

通过level指定操作索引的级别

未完待续~~~~~~~~~~~~~

作者:王大伟

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值