Pandas基本操作:Series和DataFrame(Python)

简介: Pandas基本操作:Series和DataFrame(Python)

1. Pandas介绍

Pandas是一个基于NumPy开发的工具库,用于数据处理和分析:如合并、分组、筛选和重塑数据等。Pandas的灵活性和高效性使其成为数据科学家、分析师和数据工程师的重要工具之一。


Series和DataFrame是Pandas的两种基本的数据类型,Series是一维的数据类型(可以理解为数组),而DataFrame是二维数据类型(可以理解为矩阵)。


2. Series基本功能介绍

首先先建立一个Series:

import pandas
t = pandas.Series([15,2,3,4,5],index=list("abcde"))
print(t)

输出的一维数据Series为:

a    15
b     2
c     3
d     4
e     5
dtype: int64

其中a,b,c,d,e为数据索引标签;15,2,3,4,5为数据。

2.1 索引数据

例如索引“c”指向的数据“3”

print(t["c"])

输出为:

c    3
dtype: int64

这个有点类似dict字典型数据

2.2 数据切片
print(t[[1,4]])

输出为:

b    2
e    5
dtype: int64

也可以输出一段数据:

print(t[1:4])

输出为:

b    2
c    3
d    4
dtype: int64

注意:与上面不同,这里只能输出到d 4

2.3 输出大于x的值
print(t[t>2])

输出为:

a    15
c     3
d     4
e     5
dtype: int64

输出小于x的值方法同理。

2.4 输出Series的数据
print(t.values)
print(type(t))
print(type(t.values))

输出为:

[15  2  3  4  5]
<class 'pandas.core.series.Series'>
<class 'numpy.ndarray'>

可见,这里把Series的值输出后,数据类型也变成了NumPy的ndarray。

3. DataFrame基本功能介绍

首先还是建立一个DataFrame作为示例:

import pandas
t = pandas.DataFrame([[1,2,3,4,5],
                      [11,12,13,14,15],
                      [21,22,23,24,25]],
                     index=list("ABC"),columns=list("abcde"))
print(t)

输出为:

a   b   c   d   e
A   1   2   3   4   5
B  11  12  13  14  15
C  21  22  23  24  25

可见,DataFrame就是一个有行列标注的数据列表。

3.1 输出行列的索引标签
print(t.index)
print(t.columns)

输出为:

Index(['A', 'B', 'C'], dtype='object')
Index(['a', 'b', 'c', 'd', 'e'], dtype='object')
3.2 输出DataFrame的数据
print(t.values)
print(type(t.values))

输出为:

[[ 1  2  3  4  5]
 [11 12 13 14 15]
 [21 22 23 24 25]]
<class 'numpy.ndarray'>

同样,数据类型也会被转换为ndarray。

3.3 输出某列的均值 .mean()
print(t["d"].mean())

输出为:

14.0

但是这个不能输出某行的均值。

3.4 输出DataFrame的形状(行列数)
print(t.shape)

输出为:

(3, 5)
3.5 输出数据类型
print(t.dtypes)

输出为:

a    int64
b    int64
c    int64
d    int64
e    int64
dtype: object
3.6 输出维度数
print(t.ndim)

输出为:

2

说明该DataFrame是一个二维数据表。

3.7 输出相关信息
print(t.info())

输出为:

<class 'pandas.core.frame.DataFrame'>
Index: 3 entries, A to C
Data columns (total 5 columns):
 #   Column  Non-Null Count  Dtype
---  ------  --------------  -----
 0   a       3 non-null      int64
 1   b       3 non-null      int64
 2   c       3 non-null      int64
 3   d       3 non-null      int64
 4   e       3 non-null      int64
dtypes: int64(5)
memory usage: 144.0+ bytes
None

输出该DataFrame相关信息。

3.8 输出相关数据统计
print(t.describe())

输出为:

a     b     c     d     e
count   3.0   3.0   3.0   3.0   3.0
mean   11.0  12.0  13.0  14.0  15.0
std    10.0  10.0  10.0  10.0  10.0
min     1.0   2.0   3.0   4.0   5.0
25%     6.0   7.0   8.0   9.0  10.0
50%    11.0  12.0  13.0  14.0  15.0
75%    16.0  17.0  18.0  19.0  20.0
max    21.0  22.0  23.0  24.0  25.0

输出均值、样本标准差、极值等数据。

3.9 按某列排序
print(t.sort_values(by = "e", ascending= False))

输出为:

a   b   c   d   e
C  21  22  23  24  25
B  11  12  13  14  15
A   1   2   3   4   5

按e列排序,ascending = False 意味着是降序排序。

3.10 输出某行或某列

输出前B行

print(t[1:2])

输出为:

a   b   c   d   e
B  11  12  13  14  15

输出b列

print(t["b"])

输出为:

A     2
B    12
C    22
Name: b, dtype: int64
3.11 输出数据类型
print(type(t["b"]))

输出为:

<class 'pandas.core.series.Series'>

说明b列数据类型为Series。

3.12 切片(重点)

用loc可以进行各种切片(块)。这里注意loc后面是[]

某行的切片

print(t.loc["B", :])

输出为:

a    11
b    12
c    13
d    14
e    15
Name: B, dtype: int64

注意和上面3.10的区别

切块

print(t.loc[["A","B"],["a","b","c"]])

输出为:

a   b   c
A   1   2   3
B  11  12  13

还可以用iloc切片,直接用数字索引:

print(t.iloc[1:3,[2,1]])

输出为:

c   b
B  13  12
C  23  22

带条件切片(与条件):

print(t[(t["c"]>5)&(t["d"]<20)])

输出为:

a   b   c   d   e
B  11  12  13  14  15

带条件切片(或条件):

print(t[(t["a"]>10)|(t["d"]>15)])

输出为:

a   b   c   d   e
B  11  12  13  14  15
C  21  22  23  24  25
3.13 筛选大于x的值
print(t[t>10])

输出为:

a     b     c     d     e
A   NaN   NaN   NaN   NaN   NaN
B  11.0  12.0  13.0  14.0  15.0
C  21.0  22.0  23.0  24.0  25.0

不满足条件的值会被设定为NaN,这些NaN可以被删除:

a = t[t>10]
print(a.dropna(how="all"))

输出为:

a     b     c     d     e
B  11.0  12.0  13.0  14.0  15.0
C  21.0  22.0  23.0  24.0  25.0

或者用别的值替换NaN:

a = t[t>10]
print(a.fillna(1111))

输出为:

a       b       c       d       e
A  1111.0  1111.0  1111.0  1111.0  1111.0
B    11.0    12.0    13.0    14.0    15.0
C    21.0    22.0    23.0    24.0    25.0

以上,Pandas中的Series和DataFrame的基本操作介绍完毕。


相关文章
|
7天前
|
数据挖掘 数据处理 索引
python常用pandas函数nlargest / nsmallest及其手动实现
python常用pandas函数nlargest / nsmallest及其手动实现
23 0
|
8天前
|
数据处理 Python
如何使用Python的Pandas库进行数据排序和排名
【4月更文挑战第22天】Pandas Python库提供数据排序和排名功能。使用`sort_values()`按列进行升序或降序排序,如`df.sort_values(by=&#39;A&#39;, ascending=False)`。`rank()`函数用于计算排名,如`df[&#39;A&#39;].rank(ascending=False)`。多列操作可传入列名列表,如`df.sort_values(by=[&#39;A&#39;, &#39;B&#39;], ascending=[True, False])`和分别对&#39;A&#39;、&#39;B&#39;列排名。
23 2
|
9天前
|
索引 Python
如何使用Python的Pandas库进行数据合并和拼接?
Pandas的`merge()`函数用于数据合并,如示例所示,根据&#39;key&#39;列对两个DataFrame执行内连接。`concat()`函数用于数据拼接,沿轴0(行)拼接两个DataFrame,并忽略原索引。
32 2
|
9天前
|
数据挖掘 索引 Python
如何在Python中,Pandas库实现对数据的时间序列分析?
【4月更文挑战第21天】Pandas在Python中提供了丰富的时间序列分析功能,如创建时间序列`pd.date_range()`,转换为DataFrame,设置时间索引`set_index()`,重采样`resample()`(示例:按月`&#39;M&#39;`和季度`&#39;Q&#39;`),移动窗口计算`rolling()`(如3个月移动平均)以及季节性调整`seasonal_decompose()`。这些工具适用于各种时间序列数据分析任务。
19 2
|
9天前
|
索引 Python
如何在Python中使用Pandas库进行季节性调整?
在Python中使用Pandas和Statsmodels进行季节性调整的步骤包括:导入pandas和seasonal_decompose模块,准备时间序列DataFrame,调用`seasonal_decompose()`函数分解数据为趋势、季节性和残差,可选地绘制图表分析,以及根据需求去除季节性影响(如将原始数据减去季节性成分)。这是对时间序列数据进行季节性分析的基础流程。
23 2
|
1天前
|
数据采集 Web App开发 数据可视化
Python爬虫技术与数据可视化:Numpy、pandas、Matplotlib的黄金组合
Python爬虫技术与数据可视化:Numpy、pandas、Matplotlib的黄金组合
|
1天前
|
SQL 数据库 索引
Pandas之DataFrame,快速入门,迅速掌握(三)
Pandas之DataFrame,快速入门,迅速掌握(三)
|
1天前
|
数据采集 索引 Python
Pandas之DataFrame,快速入门,迅速掌握(二)
Pandas之DataFrame,快速入门,迅速掌握(二)
|
1天前
|
编译器 索引 Python
Pandas之DataFrame,快速入门,迅速掌握(一)
Pandas之DataFrame,快速入门,迅速掌握(一)
|
4天前
|
数据采集 数据处理 索引
如何使用 Pandas 删除 DataFrame 中的非数字类型数据?
如何使用 Pandas 删除 DataFrame 中的非数字类型数据?
20 3