自学内容网 自学内容网

pandas基础:基本数据结构

基本数据结构

pandas中具有两种基本的数据存储结构,存储一维valuesSeries和存储二维valuesDataFrame,在这两种结构上定义了很多的属性和方法。

Series

Series一般由四个部分组成,分别是序列的值data、索引index、存储类型dtype、序列的名字name。其中,索引也可以指定它的名字,默认为空。

import numpy as np
import pandas as pd

s = pd.Series(
    data = [1,2,3],
    index = ['a','b','c'],
    dtype = object,
    name = 'my_series'
)
print(s)

输出:

a    1
b    2
c    3
Name: my_series, dtype: object

object代表了一种混合类型。np.object被弃用。

print(s.values) # pd.Series.data
print(s.index) # pd.Series.index
print(s.dtype) # pd.Series.dtype
print(s.name) # pd.Series.name

.shape获得Series的形状:

print(s.shape) # (3,)

DataFrame

DataFrameSeries的基础上增加了列索引,一个数据框可以由二维的data与行列索引来构造。

import numpy as np
import pandas as pd

data = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

df = pd.DataFrame(
    data = data,
    index = ['row_%d'%i for i in range(1,4)],
    columns = ['col_%d'%i for i in range(1,4)]
)
print(df)

输出:

     col_1  col_2  col_3
row_1      1      2      3
row_2      4      5      6
row_3      7      8      9

采用从列索引名到数据的映射来构造数据框,同时再加上行索引:

import numpy as np
import pandas as pd

df = pd.DataFrame(
    data = {
        'col_1':[1,2,3],
        'col_2':['A','B','C'],
        'col_3':np.random.randn(3)
    },
    index = ['row_1','row_2','row_3']
)
print(df)

输出:

       col_1 col_2     col_3
row_1      1     A -1.677007
row_2      2     B -0.627393
row_3      3     C  0.563569
import numpy as np
import pandas as pd

pd_data = {
    'col_1': [1,2,4],
    'col_2': [4,5,6],
    'col_3': [7,8,9]
}
pd_data_row = ['row_1', 'row_2', 'row_3']
df = pd.DataFrame(
    data = pd_data,
    index = pd_data_row
)
print(df)

输出:

      col_1  col_2  col_3
row_1      1      4      7
row_2      2      5      8
row_3      4      6      9

由于这种映射关系,在DataFrame中可以用[col_name][col_list]来取出相应的列与由多个列组成的表,结果分别为SeriesDataFrame

import numpy as np
import pandas as pd

pd_data = {
    'col_1': [1,2,4],
    'col_2': [4,5,6],
    'col_3': [7,8,9]
}
pd_data_row = ['row_1', 'row_2', 'row_3']
df = pd.DataFrame(
    data = pd_data,
    index = pd_data_row
)
print(df['col_1']) # Series 一列

输出:

row_1    1
row_2    2
row_3    4
Name: col_1, dtype: int64

既然是Series,那么就可以使用Series的获取方法:

print(df['col_1'].values) # 获取Series的值
# [1 2 4]

两个[]嵌套的是DataFrame类型:

print(df[['col_1']]) # DataFrame 一列
#        col_1
# row_1      1
# row_2      2
# row_3      4

pandas 中,当你从DataFrame中选择列时,选择的方式会影响返回的数据类型。具体来说,选择单列时返回的是 Series 类型,而选择多列时返回的是 DataFrame 类型。这种行为是设计上的选择,目的是为了提供更灵活的数据操作方式。

列名选择得到的是Series。

列名列表选择得到的是DataFrame。

同时,DataFrame也有形如Series的获取方法:

print(df.values)
print(df.index)
print(df.columns)
print(df.dtypes)
print(df.shape)
# [[1 4 7]
#  [2 5 8]
#  [4 6 9]]
# Index(['row_1', 'row_2', 'row_3'], dtype='object')
# Index(['col_1', 'col_2', 'col_3'], dtype='object')
# col_1    int64
# col_2    int64
# col_3    int64
# dtype: object
# (3, 3)

Joyful-Pandas-课程详情 | Datawhale


原文地址:https://blog.csdn.net/qq_63432403/article/details/145329769

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!