python--pandas学习总结

目录

一、Series和DataFrame

1. pandas.Series

2. pandas.DataFrame

二、Pandas常见用法

1. 访问数据

1.1 head()和tail()

1.2 describe()

1.3 T

1.4 sort_values()

1.5 nlargest()

1.6 sample()

2. 选择数据

2.1 根据标签选择

2.2 根据位置选择

2.3 布尔索引

3. 处理缺失值

3.1 dropna()

3.2 fillna()

4. 操作方法

4.1 agg()

4.2 apply()

4.3 value_counts()

4.4 str

5. 合并

5.1 concat()

5.2 merge()

6. 分组GroupBy

6.1 单列分组

6.2 多列分组

6.3 应用多聚合方法

6.4 不同列进行不同聚合统计

6.5 更多

三、Pandas 进阶用法

1. reshape

1.1 stack() 和 unstack()

1.2 pivot_table()

2. 时间序列

3. 分类

4. IO

 


一、Series和DataFrame


Pandas特别适合处理表格数据,如SQL表格、EXCEL表格。有序或无序的时间序列。具有行和列标签的任意矩阵数据。

打开Jupyter Notebook,导入numpy和pandas开始我们的教程:

import numpy as np
import pandas as pd

1. pandas.Series

Series是带有索引的一维ndarray数组。索引值可不唯一,但必须是可哈希的。

pd.Series([1, 3, 5, np.nan, 6, 8])

输出:

0    1.0
1    3.0
2    5.0
3    NaN
4    6.0
5    8.0
dtype: float64

我们可以看到默认索引值为0、1、2、3、4、5这样的数字。添加index属性,指定其为'c','a','i','yong','j','i'。

pd.Series([1, 3, 5, np.nan, 6, 8], index=['c','a','i','yong','j','i'])

输出如下,我们可以看到index是可重复的。

c       1.0
a       3.0
i       5.0
yong    NaN
j       6.0
i       8.0
dtype: float64

2. pandas.DataFrame

DataFrame是带有行和列的表格结构。可以理解为多个Series对象的字典结构。

pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), index=['i','ii','iii'], columns=['A', 'B', 'C'])

输出表格如下,其中index对应它的行,columns对应它的列

  A B C
i 1 2 3
ii 4 5 6
iii 7 8 9

二、Pandas常见用法

1. 访问数据

准备数据,随机生成6行4列的二维数组,行标签为从20210101到20210106的日期,列标签为A、B、C、D。

import numpy as np
import pandas as pd
np.random.seed(20201212)
df = pd.DataFrame(np.random.randn(6, 4), index=pd.date_range('20210101', periods=6), columns=list('ABCD'))
df

记住np.random.randn(6,4)的用法。pd.date_range("开始时间",periods= 数量),columns = list(列字符串组合起来)

展示表格如下:

  A B C D
2021-01-01 0.270961 -0.405463 0.348373 0.828572
2021-01-02 0.696541 0.136352 -1.64592 -0.69841
2021-01-03 0.325415 -0.602236 -0.134508 1.28121
2021-01-04 -0.33032 -1.40384 -0.93809 1.48804
2021-01-05 0.348708 1.27175 0.626011 -0.253845
2021-01-06 -0.816064 1.30197 0.656281 -1.2718

1.1 head()和tail()

查看表格前几行使用head()

df.head(2)

展示表格如下:

  A B C D
2021-01-01 0.270961 -0.405463 0.348373 0.828572
2021-01-02 0.696541 0.136352 -1.64592 -0.69841

查看表格后几行:使用tail()

df.tail(3)

展示表格如下:

  A B C D
2021-01-04 -0.33032 -1.40384 -0.93809 1.48804
2021-01-05 0.348708 1.27175 0.626011 -0.253845
2021-01-06 -0.816064 1.30197 0.656281 -1.2718

1.2 describe()

describe方法用于生成DataFrame的描述统计信息。可以很方便的查看数据集的分布情况

。注意,这里的统计分布不包含NaN

df.describe()

展示如下:

  A B C D
count 6 6 6 6
mean 0.0825402 0.0497552 -0.181309 0.22896
std 0.551412 1.07834 0.933155 1.13114
min -0.816064 -1.40384 -1.64592 -1.2718
25% -0.18 -0.553043 -0.737194 -0.587269
50% 0.298188 -0.134555 0.106933 0.287363
75% 0.342885 0.987901 0.556601 1.16805
max 0.696541 1.30197 0.656281 1.48804

我们首先回顾一下我们掌握的数学公式。

平均数(mean)

方差(variance):

标准差(std):

我们解释一下pandas的describe统计信息各属性的意义。我们仅以 A 列为例。

  • count表示计数。A列有6个数据不为空。

  • mean表示平均值。A列所有不为空的数据平均值为0.0825402。

  • std表示标准差。A列的标准差为0.551412。

  • min表示最小值。A列最小值为-0.816064。即,0%的数据比-0.816064小。

  • 25%表示四分之一分位数。A列的四分之一分位数为-0.18。即,25%的数据比-0.18小。

  • 50%表示二分之一分位数。A列的四分之一分位数为0.298188。即,50%的数据比0.298188小。

  • 75%表示四分之三分位数。A列的四分之三分位数为0.342885。即,75%的数据比0.342885小。

  • max表示最大值。A列的最大值为0.696541。即,100%的数据比0.696541小。

1.3 T

T一般表示Transpose的缩写,即转置。行列转换。

df.T

展示表格如下:

  2021-01-01 2021-01-02 2021-01-03 2021-01-04 2021-01-05 2021-01-06
A 0.270961 0.696541 0.325415 -0.33032 0.348708 -0.816064
B -0.405463 0.136352 -0.602236 -1.40384 1.27175 1.30197
C 0.348373 -1.64592 -0.134508 -0.93809 0.626011 0.656281
D 0.828572 -0.69841 1.28121 1.48804 -0.253845 -1.2718

1.4 sort_values()

指定某一列进行排序,如下代码根据C列进行正序排序。其他列随着移动

df.sort_values(by='C')

展示表格如下:

  A B C D
2021-01-02 0.696541 0.136352 -1.64592 -0.69841
2021-01-04 -0.33032 -1.40384 -0.93809 1.48804
2021-01-03 0.325415 -0.602236 -0.134508 1.28121
2021-01-01 0.270961 -0.405463 0.348373 0.828572
2021-01-05 0.348708 1.27175 0.626011 -0.253845
2021-01-06 -0.816064 1.30197 0.656281 -1.2718

1.5 nlargest()

选择某列最大的n行数据。如:df.nlargest(2,'A')表示,返回A列最大的2行数据。

df.nlargest(2,'A')

展示表格如下:

  A B C D
2021-01-02 0.696541 0.136352 -1.64592 -0.69841
2021-01-05 0.348708 1.27175 0.626011 -0.253845

1.6 sample()

sample方法表示查看随机的样例数据。

df.sample(5)表示返回随机5行数据

df.sample(5)

参数frac表示fraction,分数的意思。frac=0.01即返回1%的随机数据作为样例展示。

df.sample(frac=0.01)

2. 选择数据

2.1 根据标签选择

我们输入df['A']命令选取A列。

df['A']

输出A列数据,同时也是一个Series对象:

2021-01-01    0.270961
2021-01-02    0.696541
2021-01-03
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值