韩漫免费漫画在线观看方法,《好好疼爱里面》免费看,年轻漂亮的女士护士内衣,妈妈醉酒后把我当爸爸电视剧

文章 > 头条 > Python数据分析 | pandas汇总和计算描述统计

Python数据分析 | pandas汇总和计算描述统计

头像

爱喝马黛茶的安东尼

2019-09-29 17:53:466272浏览 · 0收藏 · 0评论

1. 聚合计算

pandas对象拥有一组常用的数学和统计方法。它们大部分都属于约简和汇总统计,用于从Series中提取单个值(如sum或mean)或从DataFrame的行或列中提取一个Series。跟对应的NumPy数组方法相比,它们都是基于没有缺失数据的假设而构建的。看一个简单的DataFrame:

df = pd.DataFrame([[1.4, np.nan], [7.1, -4.5],
    [np.nan, np.nan], [0.75, -1.3]],
    index=['a', 'b', 'c', 'd'],
    columns=['one', 'two'])
df

调用DataFrame的sum方法将会返回一个含有列的和的Series:

df.sum()  #默认axis=0/'index'

传入axis='columns'或axis=1将会按行进行求和运算:

df.sum(axis='columns') #axis=1

NA值会自动被排除,除非整个切片(这里指的是行或列)都是NA。通过skipna选项可以禁用该功能:

print(df)
print("-----")
print(df.mean(axis='columns', skipna=False)) #axis=1
print("-----")
print(df.mean(axis='columns')) #axis=1 自动跳过na

相关推荐:《Python教程

下表列出了这些约简方法的常用选项:

有些方法(如idxmin和idxmax)返回的是间接统计(比如达到最小值或 值的索引):

print(df)
print("-------")
df.idxmax() #axis=0

另一些方法则是累计型的:

print(df)
print("-------")
df.cumsum() #axis=0

还有一种方法,它既不是约简型也不是累计型。describe就是一个例子,它 用于一次性产生多个汇总统计:

df.describe() #默认忽略空值

对于非数值型数据,describe会产生另外一种汇总统计:

obj = pd.Series(['a', 'a', 'b', 'c'] * 4)
obj.describe()

下表列出了所有与描述统计相关的方法。

2. 相关系数与协方差

有些汇总统计(如相关系数和协方差)是通过参数对计算出来的。我们来看 几个DataFrame,它们的数据来自Yahoo!Finance的股票价格和成交量,使 用的是pandas-datareader包(可以用conda或pip安装):

pip install pandas-datareader

我使用pandas_datareader模块下载了一些股票数据:

import pandas_datareader.data as web 
all_data = {ticker: web.get_data_yahoo(ticker) for ticker in ['AAPL', 'IBM', 'MSFT', 'GOOG']}
 
price = pd.DataFrame({ticker: data['Adj Close'] for ticker, data in all_data.items()}) 
volume = pd.DataFrame({ticker: data['Volume'] for ticker, data in all_data.items()})
print(price.head())
print(volume.head())

现在计算价格的百分数变化,时间序列的操作后续会介绍:

returns = price.pct_change()
returns.tail()

Series的corr方法用于计算两个Series中重叠的、非NA的、按索引对齐的值 的相关系数。与此类似,cov用于计算协方差:

print(returns['MSFT'].corr(returns['IBM']))
print(returns['MSFT'].cov(returns['IBM']))

因为MSTF是一个合理的Python属性,我们还可以用更简洁的语法选择列:

returns.MSFT.corr(returns.IBM)

另一方面,DataFrame的corr和cov方法将以DataFrame的形式分别返回完整 的相关系数或协方差矩阵:

print(returns.corr())
print("-----------")
print(returns.cov())

利用DataFrame的corrwith方法,你可以计算其列或行跟另一个Series或DataFrame之间的相关系数。传入一个Series将会返回一个相关系数值Series(针对各列进行计算)

returns.corrwith(returns.IBM)

传入一个DataFrame则会计算按列名配对的相关系数。这里,我计算百分比 变化与成交量的相关系数:

print(returns.head())
print(volume.head())
returns.corrwith(volume) #按列配对

传入axis='columns'/1即可按行进行计算。无论如何,在计算相关系数之前,所 有的数据项都会按标签对齐。

3. 唯一值、值计数以及成员资格

还有一类方法可以从一维Series的值中抽取信息。看下面的例子:

obj = pd.Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c'])
obj

第一个函数是unique,它可以得到Series中的唯一值数组:

uniques = obj.unique()
uniques

返回的唯一值是未排序的,如果需要的话,可以对结果再次进行排序 (uniques.sort())。相似的,value_counts用于计算一个Series中各值出现 的频率:

obj.value_counts()

为了便于查看,结果Series是按值频率降序排列的。value_counts还是一个 顶级pandas方法,可用于任何数组或序列:

pd.value_counts(obj.values, sort=False)

isin用于判断矢量化集合的成员资格,可用于过滤Series中或DataFrame列中 数据的子集:

print(obj)
print("-----------")
mask = obj.isin(['b', 'c'])
print(mask)
print("-----------")
obj[mask]

与isin类似的是Index.get_indexer方法,它可以给你一个索引数组,从可能包 含重复值的数组到另一个不同值的数组:

to_match = pd.Series(['c', 'a', 'b', 'b', 'c', 'a'])
unique_vals = pd.Series(['c', 'b', 'a'])
pd.Index(unique_vals).get_indexer(to_match)

下表给出了这几个方法的一些参考信息:

有时,你可能希望得到DataFrame中多个相关列的一张柱状图。例如:

data = pd.DataFrame({'Qu1': [1, 3, 4, 3, 4],
    'Qu2': [2, 3, 1, 2, 3],
    'Qu3': [1, 5, 2, 4, 4]})
data

将pandas.value_counts传给该DataFrame的apply函数,就会出现:

result = data.apply(pd.value_counts).fillna(0)
result

这里,结果中的行标签是所有列的唯一值。后面的频率值是每个列中这些值的相应计数。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

张柏芝门户大开照| 美女两个球球抖动抓球球视频| 老阿姨高清免费观看电视剧| 韩剧《酒醉热吻》| 老公把舌头放进我B里揽拌| 成人网站| 母亲和女婿免费高清电视剧| 第79章厨房的欢愉方晴| 欧美大片免费PPT| 儿媳婉柔和父亲王大川的背景故事| 电影《乳妓》在线观看| 妈妈的朋友7| 《不戴套瑜伽教练3》| 《灭火宝贝4》| 美国色情巜春药2| 狗锁住女人狗的视频大全图片| 自己怎么玩隐私位置游戏| 灭火宝贝2户外版| 精品人OR猪OR狗的DNA| 《不戴套瑜伽教练3》| 老公刚日完又让朋友日| 公翁晚上吃我奶头子| 中美芬太尼是咋回事| 妈妈你真棒里面的插曲叫什么| 皇空无痕MV免费视频观看 | 被两个老头又日又添| 老公把闺蜜干的嗷嗷叫| 苏苏的骚浪短笔趣阁小说| [汉化版]全彩漫画免费阅读| 门卫秦大爷1-42章免费阅读| 我兄弟的妈妈免费观看电视剧| 丰满岳妇张开腿任你躁| 小叔子从后面抱住我的电视剧| 樱花电影大全免费观看西瓜| 男同| 人间水蜜桃MAC923| 爸爸缓慢有力送女儿的文案| 一品国精和二品国精的文化意义| 男生把小困困放到女生困里视频| 小妈妈2免费观看完整电视剧| 无套内谢A片毛片免费