概率论之pandas

这篇博客介绍了Pandas的基础操作,包括Series和DataFrame的创建、特性、数据处理、时间序列分析以及数据可视化。内容涵盖快速入门、处理丢失数据、数据合并分组、数据整形、电影评分数据分析,强调了数据对齐、运算、映射函数和重新索引等核心概念。
摘要由CSDN通过智能技术生成

快速入门

1

import numpy as np

s=pd.series([1,3,5,np.nan,8,4])

Series

s=pd.Series([1,3,5,np.nan,8,4])

s

Out[6]: 

0    1.0

1    3.0

2    5.0

3    NaN

4    8.0

5    4.0

dtype: float64

date_range

dates=pd.date_range('20190301',periods=6)

dates

Out[10]: 

DatetimeIndex(['2019-03-01', '2019-03-02', '2019-03-03', '2019-03-04',

               '2019-03-05', '2019-03-06'],

              dtype='datetime64[ns]', freq='D')

二维数组索引

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

data

Out[14]: 

                   A         B         C         D

2019-03-01  1.866219 -1.003057  2.526899 -0.563343

2019-03-02 -1.413626  1.116727 -0.470054 -0.567930

2019-03-03  0.112202 -0.621813 -0.658212 -0.537312

2019-03-04 -0.567839  2.175933  1.126050 -0.412436

2019-03-05 -1.854786  0.980092  0.797543 -0.432381

data.shape

Out[15]: (6, 4)

data.values

Out[16]: 

array([[ 1.86621859, -1.0030566 ,  2.52689932, -0.56334339],

       [-1.41362647,  1.11672695, -0.47005354, -0.56793016],

       [ 0.11220208, -0.62181257, -0.65821206, -0.53731156],

       [-0.5678393 ,  2.17593279,  1.12604991, -0.412436  ],

       [-1.85478576,  0.98009218,  0.79754332, -0.43238061],

       [-0.28618627,  0.7689724 ,  0.75578607,  0.15118955]])

字典时间戳

d={
   'A':1,'B':pd.Timestamp('20130301'),'C':range(4),'D':np.arange(4)}

d

Out[19]: 

{
   'A': 1,

 'B': Timestamp('2013-03-01 00:00:00'),

 'C': range(0, 4),

 'D': array([0, 1, 2, 3])}
构造二维形式
df=pd.DataFrame(d)

df

Out[21]: 

   A          B  C  D

0  1 2013-03-01  0  0

1  1 2013-03-01  1  1

2  1 2013-03-01  2  2

查看数据和排序修改

data.head(2)

Out[22]: 

                   A         B         C         D

2019-03-01  1.866219 -1.003057  2.526899 -0.563343

2019-03-02 -1.413626  1.116727 -0.470054 -0.567930

data.tail()

Out[23]: 

                   A         B         C         D

2019-03-02 -1.413626  1.116727 -0.470054 -0.567930

2019-03-03  0.112202 -0.621813 -0.658212 -0.537312

2019-03-04 -0.567839  2.175933  1.126050 -0.412436

2019-03-05 -1.854786  0.980092  0.797543 -0.432381

2019-03-06 -0.286186  0.768972  0.755786  0.151190

data.index

Out[24]: 

DatetimeIndex(['2019-03-01', '2019-03-02', '2019-03-03', '2019-03-04',

               '2019-03-05', '2019-03-06'],

              dtype='datetime64[ns]', freq='D')

data.columns

Out[25]: Index(['A', 'B', 'C', 'D'], dtype='object')

data.describe()

Out[26]: 

              A         B         C         D

count  6.000000  6.000000  6.000000  6.000000

mean  -0.357336  0.569476  0.679669 -0.393702

std    1.309362  1.181577  1.161292  0.275140

min   -1.854786 -1.003057 -0.658212 -0.567930

25%   -1.202180 -0.274116 -0.163594 -0.556835

50%   -0.427013  0.874532  0.776665 -0.484846

75%    0.012605  1.082568  1.043923 -0.417422

max    1.866219  2.175933  2.526899  0.151190

data.T

Out[27]: 

   2019-03-01  2019-03-02  2019-03-03  2019-03-04  2019-03-05  2019-03-06

A    1.866219   -1.413626    0.112202   -0.567839   -1.854786   -0.286186

B   -1.003057    1.116727   -0.621813    2.175933    0.980092    0.768972

C    2.526899   -0.470054   -0.658212    1.126050    0.797543    0.755786

D   -0.563343   -0.567930   -0.537312   -0.412436   -0.432381    0.151190

安列排序

data.sort_index(axis=1)

Out[28]: 

                   A         B         C         D

2019-03-01  1.866219 -1.003057  2.526899 -0.563343

2019-03-02 -1.413626  1.116727 -0.470054 -0.567930

2019-03-03  0.112202 -0.621813 -0.658212 -0.537312

2019-03-04 -0.567839  2.175933  1.126050 -0.412436

2019-03-05 -1.854786  0.980092  0.797543 -0.432381

2019-03-06 -0.286186  0.768972  0.755786  0.151190

data.sort_index(axis=1,ascending=False)

Out[29]: 

                   D         C         B         A

2019-03-01 -0.563343  2.526899 -1.003057  1.866219

2019-03-02 -0.567930 -0.470054  1.116727 -1.413626

2019-03-03 -0.537312 -0.658212 -0.621813  0.112202

2019-03-04 -0.412436  1.126050  2.175933 -0.567839

2019-03-05 -0.432381  0.797543  0.980092 -1.854786

2019-03-06  0.151190  0.755786  0.768972 -0.286186

data.sort_index(axis=1,ascending=True)

Out[30]: 

                   A         B         C         D

2019-03-01  1.866219 -1.003057  2.526899 -0.563343

2019-03-02 -1.413626  1.116727 -0.470054 -0.567930

2019-03-03  0.112202 -0.621813 -0.658212 -0.537312

2019-03-04 -0.567839  2.175933  1.126050 -0.412436

2019-03-05 -1.854786  0.980092  0.797543 -0.432381

2019-03-06 -0.286186  0.768972  0.755786  0.151190

data.sort_values(by='A')

Out[31]: 

                   A         B         C         D

2019-03-05 -1.854786  0.980092  0.797543 -0.432381

2019-03-02 -1.413626  1.116727 -0.470054 -0.567930

2019-03-04 -0.567839  2.175933  1.126050 -0.412436

2019-03-06 -0.286186  0.768972  0.755786  0.151190

2019-03-03  0.112202 -0.621813 -0.658212 -0.537312

2019-03-01  1.866219 -1.003057  2.526899 -0.563343

data.A

Out[32]: 

2019-03-01    1.866219

2019-03-02   -1.413626

2019-03-03    0.112202

2019-03-04   -0.567839

2019-03-05   -1.854786

2019-03-06   -0.286186

Freq: D, Name: A, dtype: float64

data[2:4]

Out[33]: 

                   A         B         C         D

2019-03-03  0.112202 -0.621813 -0.658212 -0.537312

2019-03-04 -0.567839  2.175933  1.126050 -0.412436

data['20190302':'20190305']

Out[34]: 

                   A         B         C         D

2019-03-02 -1.413626  1.116727 -0.470054 -0.567930

2019-03-03  0.112202 -0.621813 -0.658212 -0.537312

2019-03-04 -0.567839  2.175933  1.126050 -0.412436

loc效率较高

data.loc['20190302':'20190304']

Out[35]: 

                   A         B         C         D

2019-03-02 -1.413626  1.116727 -0.470054 -0.567930

2019-03-03  0.112202 -0.621813 -0.658212 -0.537312

2019-03-04 -0.567839  2.175933  1.126050 -0.412436

data.iloc[2:4]

Out[36]: 

                   A         B         C         D

2019-03-03  0.112202 -0.621813 -0.658212 -0.537312

2019-03-04 -0.567839  2.175933  1.126050 -0.412436

data.loc[:,['B','C']]

Out[37]: 

                   B         C

2019-03-01 -1.003057  2.526899

2019-03-02  1.116727 -0.470054

2019-03-03 -0.621813 -0.658212

2019-03-04  2.175933  1.126050

2019-03-05  0.980092  0.797543

2019-03-06  0.768972  0.755786

at效率更高访问特定值

data.at[pd.Timestamp('20190302'),'B']

Out[38]: 1.116726953479249

data.iat[1,1]

Out[39]: 1.116726953479249

布尔索引

data[data.A>0]

Out[40]: 

                   A         B         C         D

2019-03-01  1.866219 -1.003057  2.526899 -0.563343

2019-03-03  0.112202 -0.621813 -0.658212 -0.537312

data[data>0]

Out[41]: 

                   A         B         C        D

2019-03-01  1.866219       NaN  2.526899      NaN

2019-03-02       NaN  1.116727       NaN      NaN

2019-03-03  0.112202       NaN       NaN      NaN

2019-03-04       NaN  2.175933  1.126050      NaN

2019-03-05       NaN  0.980092  0.797543      NaN

2019-03-06       NaN  0.768972  0.755786  0.15119

data2=data.copy()

data2

Out[43]: 

                   A         B         C         D

2019-03-01  1.866219 -1.003057  2.526899 -0.563343

2019-03-02 -1.413626  1.116727 -0.470054 -0.567930

2019-03-03  0.112202 -0.621813 -0.658212 -0.537312

2019-03-04 -0.567839  2.175933  1.126050 -0.412436

2019-03-05 -1.854786  0.980092  0.797543 -0.432381

2019-03-06 -0.286186  0.768972  0.755786  0.151190

tag=['a']*2+['b']*2+['c']*2

data2['TAG']=tag

data2

Out[46]: 

                   A         B         C         D TAG

2019-03-01  1.866219 -1.003057  2.526899 -0.563343   a

2019-03-02 -1.413626  1.116727 -0.470054 -0.567930   a

2019-03-03  0.112202 -0.621813 -0.658212 -0.537312   b

2019-03-04 -0.567839  2.175933  1.126050 -0.412436   b

2019-03-05 -1.854786  0.980092  0.797543 -0.432381   c

2019
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python是数据科学和机器学习领域中非常流行的语言,其中有许多强大的库支持概率论和统计模型的实现。其中两个核心库是NumPy和SciPy,它们提供了大量的数学函数和算法,而更高级的库如Pandas用于数据处理,matplotlib和seaborn则用于数据可视化。 在概率论方面,你可以使用: 1. `numpy.random`模块:提供了各种随机数生成器,如均匀分布、正态分布等。 2. `scipy.stats`模块:包含许多概率分布和统计测试函数,比如计算累积分布函数(CDF)、概率密度函数(PDF)或进行假设检验。 3. `statsmodels`库:提供更高级的统计模型,如线性回归、时间序列分析、以及各种假设检验。 在统计模型方面,有: 1. `sklearn`(scikit-learn):这是机器学习的基础库,包含了诸如线性回归、决策树、聚类算法、分类器等常用统计模型。 2. `pandas`的数据框结构非常适合数据探索和预处理,这对于构建统计模型至关重要。 3. `pyMC3`和`Stan`:用于构建和估计贝叶斯模型的库,支持概率编程。 4. `TensorFlow Probability`或`Edward`:如果你需要在深度学习背景下使用概率模型,这些库提供了概率图模型和自动概率编程功能。 如果你对某个特定的统计模型或概率方法感兴趣,例如贝叶斯网络、马尔可夫链蒙特卡洛(MCMC)或时间序列分析,请告诉我,我可以为你提供更详细的介绍和代码示例。另外,还有许多用于机器学习的高级库,如`Keras`和`TensorFlow`,它们也支持概率相关的组件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值