2019-10-28 10:19:28

pandas入门(二):pandas中DataFrame的用法

41 / 0 / 0 / 0

DataFramepandas 中一个重要的数据结构,相当于表格数据模型,他能像excel 那样方便的处理数据,能快速的生成统计数据和数据图形。在这里,看看 DataFrame 那些数据分析的功能。

DataFrame 数据统计功能

模拟一组数据,用来做下面的实验:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(365,4), index=pd.date_range('01/01/2018',periods=365),columns=list('ABCD'))
print df

随机的创建一个DataFrame ,用来代表2108年中四个物品A,B,C,D的价格变化情况。

DataFrame 在绘制图表上也非常的简单:

import matplotlib.pyplot as plt
df = df.cumsum()
df.plot()
plt.show()

在上面的基础数据下,使用cumsum 对数据进行汇总,得到如下的趋势图,是不是很简单,不管是图表的形式表达还是配色可读性都非常的强。

基本的统计数据汇总:

print  df.describe()

常见的统计数据如下:

                A           B           C           D
count  365.000000  365.000000  365.000000  365.000000
mean     0.017121   -0.084041    0.091562   -0.062840
std      1.031611    0.989987    0.963780    1.004732
min     -2.974170   -3.160127   -2.965152   -3.484637
25%     -0.713081   -0.752224   -0.521968   -0.716572
50%      0.028601   -0.075576    0.108083   -0.011894
75%      0.727676    0.540112    0.698640    0.615861
max      2.721788    2.970540    2.532931    2.620623

对数据进行相应的排序 sort_values ,获取A组数据中,涨幅最大的前十位的名额,同样的可以通过参数的配置,获取到相应的其他数据:

print  df.sort_values(["A"],ascending=False).head(10)

数据如下:

     Unnamed: 0         A         B         C         D
66   2018-03-08  2.721788  1.158173  1.021082 -0.178776
270  2018-09-28  2.631832  2.846485  1.274637  0.640863
173  2018-06-23  2.589301 -0.551382 -0.508514 -0.554362
130  2018-05-11  2.498213 -0.328492 -1.323810  0.520516
116  2018-04-27  2.466552 -1.087436 -0.695060  0.303700
71   2018-03-13  2.404274  1.204663  0.078819  1.313544
58   2018-02-28  2.358710 -0.396677  0.709050 -0.621562
198  2018-07-18  2.298132  1.126279  0.149108 -0.105187
222  2018-08-11  2.168493 -2.108563  0.818318  0.275239
362  2018-12-29  2.163639  0.962808  0.447942  0.167923

loc 除了对数据能够进行索引,还能够对数据进行筛选,这相当于SQL 语句中的where,如下对数据中过滤出A栏和B栏中数据为正数的条目,并只显示'A','B','C'栏目中的数据:

print  df.loc[(df['B'] > 0) & (df['C'] > 0),['Unnamed: 0','B','C']].head(10)

数据如下:

    Unnamed: 0         B         C
4   2018-01-05  1.466975  1.533502
8   2018-01-09  0.572125  1.254267
11  2018-01-12  0.546428  0.780099
23  2018-01-24  0.302782  0.841574
26  2018-01-27  0.038191  0.640075
28  2018-01-29  2.918737  0.075505
36  2018-02-06  0.176864  1.936910
37  2018-02-07  0.131508  1.256736
51  2018-02-21  0.260943  0.961528
62  2018-03-04  0.016350  0.576649

同样的,过滤完数据以后,可以对数据进行同样的一些统计的操作,对B项求平均值

print  df.loc[(df['B'] > 0) & (df['C'] > 0)].B.mean()

结果如下:

0.71832419517

常用的操作还有,最大值max()和最小值min(),计数count(),求和sum()

PS: 如本文对您有疑惑,可加QQ:1752338621 进行讨论。

0 条评论

0
0
官方
微信
官方微信
Q Q
咨询
意见
反馈
返回
顶部