Pandas常用数据结构

一、Series类型

在Pandas中,有两个基本的数据类型,使得在处理数据的时候变得非常高效,分别是Series和DataFrame,其中DataFrame是由多个Series组成的,因此要先学好Series,才能对DataFrame的使用更加得心应手。

Series是一种类似于列表的对象,由一列数据以及一列与之对应的索引组成。如下图所示。

Pandas常用数据结构

; 1. 创建Series对象:

在实际开发中,可能需要经常创建Series对象,而创建Series对象有多重方式,下面进行讲解。

1.1. 通过列表或ndarray数组创建:

import pandas as pd

persons = ['张三','李四','王五']
series = pd.Series(persons)

print(series)
print(type(series))

上述代码可以看到输出以上代码输出为:

0    张三
1    李四
2    王五
dtype: object

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

1.2. 通过字典创建:

persons = {"&#x5F20;&#x4E09;":18, "&#x674E;&#x56DB;": 25, "&#x738B;&#x4E94;": 19}
series = pd.Series(persons)

print(series)
print(type(series))

上述代码的输出结果为:

&#x5F20;&#x4E09;    18
&#x674E;&#x56DB;    25
&#x738B;&#x4E94;    19
dtype: int64

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

2. Series对象相关操作:

2.1. 获取数据和索引:

通过 series.indexseries.values能分别获取到 Series对象的索引和值。示例代码如下:

persons = ['&#x5F20;&#x4E09;','&#x674E;&#x56DB;','&#x738B;&#x4E94;']
series = pd.Series(persons)

print(series.index)
print(series.values)

输出结果为:

RangeIndex(start=0, stop=3, step=1)
['&#x5F20;&#x4E09;' '&#x674E;&#x56DB;' '&#x738B;&#x4E94;']

2.2. 通过索引获取对应的值:

我们经常会通过索引来获取对应的值,语法为: series[&#x7D22;&#x5F15;]。示例代码如下:

persons = ['&#x5F20;&#x4E09;','&#x674E;&#x56DB;','&#x738B;&#x4E94;']
series = pd.Series(persons)

print(series[0])

输出结果为: '&#x5F20;&#x4E09;'

二、DataFrame对象:

DataFrame由多行多列组成,是一个表格型的数据结构。可以认为一个DataFrame是由多个Series对象组成,这些Series共用同一个行索引,每个Series的数据类型可以不同。结构图如下。

Pandas常用数据结构

; 1. 创建DataFrame对象:

1.1. 通过ndarray创建DataFrame对象:

二维数组天然具有行和列的概念,因此可以非常方便的使用二维数组创建DataFrame对象。示例代码如下:

import numpy as np

&#x901A;&#x8FC7;ndarray&#x521B;&#x5EFA;DataFrame
array = np.random.randn(5,4)
print(array)

df_obj = pd.DataFrame(array)
print(df_obj.head())

运行结果如下:

[[ 1.70457214  0.53100369  0.37360947  0.93320688]
 [-0.56648031 -0.32116357 -0.3837961  -1.80175888]
 [ 2.12109864  0.83919019 -0.43187152  0.80611653]
 [-0.66275038  0.90984602  0.11596098  0.41519099]
 [-1.62119184  2.40474293  0.96915745 -0.28995527]]
          0         1         2         3
0  1.704572  0.531004  0.373609  0.933207
1 -0.566480 -0.321164 -0.383796 -1.801759
2  2.121099  0.839190 -0.431872  0.806117
3 -0.662750  0.909846  0.115961  0.415191
4 -1.621192  2.404743  0.969157 -0.289955

同理,用二维列表,也同样可以达到效果。可以在创建 DataFrame的时候,指定行索引和列索引。示例代码如下:

df = pd.DataFrame(array, index=[1,2,3,4,5], columns=['&#x661F;&#x671F;&#x4E00;','&#x661F;&#x671F;&#x4E8C;','&#x661F;&#x671F;&#x4E09;','&#x661F;&#x671F;&#x56DB;']

输出结果如下:

     &#x661F;&#x671F;&#x4E00;     &#x661F;&#x671F;&#x4E8C;     &#x661F;&#x671F;&#x4E09;    &#x661F;&#x671F;&#x56DB;
1  1.704572  0.531004  0.373609  0.933207
2 -0.566480 -0.321164 -0.383796 -1.801759
3  2.121099  0.839190 -0.431872  0.806117
4 -0.662750  0.909846  0.115961  0.415191
5 -1.621192  2.404743  0.969157 -0.289955

1.2. 通过字典创建DataFrame:

persons = [{"username":"&#x5F20;&#x4E09;","age": 18, "height": 180},{"username":"&#x674E;&#x56DB;","age": 20, "height": 170}]
df = pd.DataFrame(persons)
print(df)

运行结果如下:

    username    age height
0   &#x5F20;&#x4E09;    18  180
1   &#x674E;&#x56DB;    20  170

上述是把多个字典存放到列表中,也可以直接使用字典创建,示例代码如下:

persons = {"username":["&#x5F20;&#x4E09;","&#x674E;&#x56DB;"],"age": [18, 20], "height": [180, 170]}
df = pd.DataFrame(persons)
print(df)

2. DataFrame基本操作:

2.1. 获取列的数据:

通过 df.&#x5217;&#x540D;或者 df['&#x5217;&#x540D;']都可以获取到该列的所有数据。示例代码如下:

1. df.&#x5217;&#x540D;
print(df.username&#xFF09;
2. df['&#x5217;&#x540D;']
print(df['username'])

以上获取到的数据类型,实际上就是一个Series对象。

2.2. 获取行的数据:

行的数据是通过索引来获取,在 DataFrame中索引操作功能非常强大,这里我们讲解一个简单的示例。关于索引更多操作读者请参考下一节。

&#x83B7;&#x53D6;&#x4E0B;&#x6807;&#x4E3A;0&#x7684;&#x7D22;&#x5F15;&#x7684;&#x90A3;&#x4E00;&#x884C;&#x7684;&#x503C;
print(df.iloc[0])

输出结果如下:

username     &#x5F20;&#x4E09;
age          18
height      180
Name: 0, dtype: object

2.3. 增加列的数据:

可以通过类似字典操作的方式,给 DataFrame添加新的列。示例代码如下:

&#x6DFB;&#x52A0;weight&#x5217;
df['weight'] = [80, 60]
print(df)

输出结果如下:

    username    age    height   weight
0   &#x5F20;&#x4E09;    18  180 80
1   &#x674E;&#x56DB;    20  170 60

2.4. 删除列:

通过 del关键字即可删除某一列的数据。示例代码如下:

del df['weight']
print(df)

输出结果如下:

    username    age height
0   &#x5F20;&#x4E09;    18  180
1   &#x674E;&#x56DB;    20  170

3. 查看数据:

3.1. head

如果 DataFrame数据行数特别多,我们只想看前面部分的数据,那么可以使用 df.head来查看。示例代码如下:

&#x9ED8;&#x8BA4;&#x67E5;&#x770B;&#x524D;&#x9762;5&#x6761;&#x6570;&#x636E;
df.head()

&#x67E5;&#x770B;&#x524D;&#x9762;10&#x6761;&#x6570;&#x636E;
df.head(10)

3.2. tail:

head相反, tail是用于查看 DataFrame末尾的数据,默认是5条。示例代码如下:

&#x9ED8;&#x8BA4;&#x67E5;&#x770B;&#x672B;&#x5C3E;5&#x8C03;&#x6570;&#x636E;
df.tail()

&#x67E5;&#x770B;&#x672B;&#x5C3E;10&#x6761;&#x6570;&#x636E;
df.tail(10)

3.3. describe:

查看 DataFrame的描述。会把所有数字类型的列进行运算,比如获取总的个数,平均值,中位数等。

import pandas as pd
persons = [{"username":"&#x5F20;&#x4E09;","age": 18, "height": 180},{"username":"&#x674E;&#x56DB;","age": 20, "height": 170}]
df = pd.DataFrame(persons)
df.describe()

输出结果为:

        age         height
count   2.000000    2.000000
mean    19.000000   175.000000
std 1.414214    7.071068
min 18.000000   170.000000
25% 18.500000   172.500000
50% 19.000000   175.000000
75% 19.500000   177.500000
max 20.000000   180.000000

3.4. shape:

查看当前 DataFrame的形状。示例代码如下:

df.shape

3.5. index和columns:

df.index用于查看当前的行索引。 df.columns用于查看当前的列索引。示例代码如下:

&#x67E5;&#x770B;&#x884C;&#x7D22;&#x5F15;
print(df.index)
&#x67E5;&#x770B;&#x5217;&#x7D22;&#x5F15;
print(df.columns)

3.6. T:

df.T用于转置数组,可以将行变为列,列变为行。示例代码如下:

print(df.T)

3.7. info:

查看数据相关信息,比如列数、每列的类型等。

3.8. dtypes:

查看 DataFrame的所有列的数据类型。

Original: https://blog.csdn.net/qq_41404557/article/details/125898356
Author: Begin to change
Title: Pandas常用数据结构

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/743651/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球