Pandas - 常用操作

说明:文章使用的数据集来源于 https://www.kaggle.com/c/titanic/data Kaggle 泰坦尼克号竞赛提供的数据。

一. DataFrame 结构

DataFrame 是 Pandas 最核心的数据结构,可以使用值为列表的字典进行构造:

>> data = {'a': [1,2,3], 'b':[1.2, None, 1.3], 'c':['Alex', 'Bob', 'Chandler']}
>> data
{'a': [1, 2, 3], 'b': [1.2, None, 1.3], 'c': ['Alex', 'Bob', 'Chandler']}
>> df_data = pd.DataFrame(data)
>> df_data

字典的键将作为 DataFrame 的列索引,对应的列表作为相应列的值:

>> df_data.info()

RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   a       3 non-null      int64  
 1   b       2 non-null      float64
 2   c       3 non-null      object 
dtypes: float64(1), int64(1), object(1)
memory usage: 200.0+ bytes

二. 从 csv 文件加载 DataFrame

>> df = pd.read_csv('../data/train.csv')
>> df.head()

读取结果:

>> df.info()

Index: 891 entries, Braund, Mr. Owen Harris to Dooley, Mr. Patrick
Data columns (total 11 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   PassengerId  891 non-null    int64  
 1   Survived     891 non-null    int64  
 2   Pclass       891 non-null    int64  
 3   Sex          891 non-null    object 
 4   Age          714 non-null    float64
 5   SibSp        891 non-null    int64  
 6   Parch        891 non-null    int64  
 7   Ticket       891 non-null    object 
 8   Fare         891 non-null    float64
 9   Cabin        204 non-null    object 
 10  Embarked     889 non-null    object 
dtypes: float64(2), int64(5), object(4)
memory usage: 123.5+ KB

此外,还可以使用 DataFrame 提供的 describe 返回常用的统计分析项:

>> df.describe()

其结果包含了所有数值列的计数、平均值、均值、最小值、最大值、中位值等。

三. DataFrame 的列 Series

使用列索引,取出 DataFrame 的某一列:

>> age = df['Age']
>> age
0      22.0
1      38.0
2      26.0
3      35.0
4      35.0
       ... 
886    27.0
887    19.0
888     NaN
889    26.0
890    32.0
Name: Age, Length: 891, dtype: float64
>> type(age)
pandas.core.series.Series

DataFrame 的列为 Series 结构,使用切片索引打印 Series 的前 5 个元素:

>> age[:5]
0    22.0
1    38.0
2    26.0
3    35.0
4    35.0
Name: Age, dtype: float64

Series 也有索引属性:

>> age.index
RangeIndex(start=0, stop=891, step=1)

values 属性返回 ndarray 结构:

>> age.values[:5]
array([22., 38., 26., 35., 35.])

下面,使用指定的列作为 DataFrame 的行索引:

>> df = df.set_index('Name')
>> df.head()

Name 列将作为 DataFrame 的行索引:

这时,取出的列 Series 的索引也将是旅客的姓名:

>> age = df['Age']
>> age[:5]
Name
Braund, Mr. Owen Harris                                22.0
Cumings, Mrs. John Bradley (Florence Briggs Thayer)    38.0
Heikkinen, Miss. Laina                                 26.0
Futrelle, Mrs. Jacques Heath (Lily May Peel)           35.0
Allen, Mr. William Henry                               35.0
Name: Age, dtype: float64

使用索引取出 Series 中具体的某个值:

>> age['Heikkinen, Miss. Laina']
26.0

Series 也提供了很多常用的统计方法:

>> age.mean()
29.69911764705882
>> age.max(),age.min()
(80.0, 0.42)

Series 和 Numpy 的 ndarray 一样,在和常量进行运算时,也可以进行广播操作:

>> age + 10
Name
Braund, Mr. Owen Harris                                32.0
Cumings, Mrs. John Bradley (Florence Briggs Thayer)    48.0
Heikkinen, Miss. Laina                                 36.0
Futrelle, Mrs. Jacques Heath (Lily May Peel)           45.0
Allen, Mr. William Henry                               45.0
                                                       ... 
Montvila, Rev. Juozas                                  37.0
Graham, Miss. Margaret Edith                           29.0
Johnston, Miss. Catherine Helen "Carrie"                NaN
Behr, Mr. Karl Howell                                  36.0
Dooley, Mr. Patrick                                    42.0
Name: Age, Length: 891, dtype: float64

Series 中的每个值都将进行加 10 操作。

你可能感兴趣的:(Pandas - 常用操作)