2. Python包之Pandas介绍

版权声明:仅供学习使用,未经同意不得转发,不可使用商业用途。 https://blog.csdn.net/wangqingbang/article/details/90319536

前言:Pandas 是一个开源的软件库。DataFrames和Series是其两个主要数据结构,被广泛用于数据分析。Series 是单维索引数组,而DataFrames 是具有列级和行级索引的表格数据结构。Pandas 是预处理数据集的绝佳工具,可提供高度优化的性能。

1. Pandas基础用法

代码里面有详细的注释和用法示例:
在这里会用到一些NumPy的知识,如果不是很了解NumPy的有关基础,可以戳这个链接回顾:

NumPy介绍

下面是详细介绍代码用例:

import pandas as pd
series_1 = pd.Series([2,9,9,1])         #创建一个series对象
print(series_1.values)                  #输出series对象的值
#> [2 9 0 1]

series_1.index      #series对象默认的下标
#> RangeIndex(start=0, stop=4, step=1)

series_1.index = ['a', 'b', 'c', 'd']   #设置series对象的下标
series_1['d']       #使用新下标来取值
#> 1

#用pandas创建DataFrame
class_data = {
    'Names' : ['Jeck', 'Rose', 'Amiy'],
    'Standard' : [7, 5, 8],
    'Subject' : ['English', 'Math', 'Sci']
}
class_df = pd.DataFrame(class_data, index=['Student1', 'Student2', 'Student3'], columns=['Names', 'Standard', 'Subject'])
print(class_df)
#>            Names  Standard  Subject
#   Student1  Jeck         7  English
#   Student2  Rose         5     Math
#   Student3  Amiy         8      Sci

class_df.Names      #直接调用属性
#>Student1    Jeck
#Student2    Rose
#Student3    Amiy
#Name: Names, dtype: object

#向DataFrame添加新条目
import numpy as np  #导入numpy
class_df.ix['Student4'] = ['Rob',np.nan, 'History']
class_df.T          # 转置DataFrame
#>         Student1 Student2 Student3 Student4
#Names        Jeck     Rose     Amiy      Rob
#Standard        7        5        8      NaN
#Subject   English     Math      Sci  History

class_df.sort_values(by='Standard')     #根据一列排序行
#>         Names  Standard  Subject
#Student2  Rose       5.0     Math
#Student1  Jeck       7.0  English
#Student3  Amiy       8.0      Sci
#Student4   Rob       NaN  History


#添加额外一行到DataFrame的对象中
col_entry = pd.Series(['A', 'B', 'A+', 'C'], index=['Student1','Student2','Student3','Student4'])
class_df['Grade'] = col_entry
print(class_df)
#         Names  Standard  Subject Grade
#Student1  Jeck       7.0  English     A
#Student2  Rose       5.0     Math     B
#Student3  Amiy       8.0      Sci    A+
#Student4   Rob       NaN  History     C

#将两个DataFrames连接起来
student_age = pd.DataFrame(data={'Age' : [13,10,15,18]}, index=['Student1','Student2','Student3','Student4'])
print(student_age)
#>          Age
#Student1   13
#Student2   10
#Student3   15
#Student4   18

class_data = pd.concat([class_df, student_age], axis=1) # 按行添加
print(class_data)
#>         Names  Standard  Subject Grade  Age
#Student1  Jeck       7.0  English     A   13
#Student2  Rose       5.0     Math     B   10
#Student3  Amiy       8.0      Sci    A+   15
#Student4   Rob       NaN  History     C   18

2. Pandas函数

使用 Map 函数可将任意函数分别应用于列或行中的每个元素,使用apply函数可将任意函数同时应用列或行中的所有元素。

#Map Function
class_data['Subject'] = class_data['Subject'].map(lambda x : x + 'Sub')         # lambda代替一些简单的函数
print(class_data['Subject'])
#> Student1    EnglishSub
#Student2       MathSub
#Student3        SciSub
#Student4    HistorySub
#Name: Subject, dtype: object

#Apply Function
def age_add(x):         # 定义一个提高年龄一岁的新函数
    return (x+1)

print('------Old valus-----')
print(class_data['Age'])
print('----New value----')
print(class_data['Age'].apply(age_add))
#> ------Old valus-----
#Student1    13
#Student2    10
#Student3    15
#Student4    18
#Name: Age, dtype: int64
#----New value----
#Student1    14
#Student2    11
#Student3    16
#Student4    19
#Name: Age, dtype: int64

下面可以将列的数据类型更改为 “category” 类型:

class_data['Grade'] = class_data['Grade'].astype('category')
print(class_data.Grade.dtypes)
#> category

以下代码将结果存储为 .csv 文件:

#存储结果
class_data.to_csv('class_dataset.csv', index=False)

3. 补充

在Pandas库提供的函数中,合并函数(concat、merge、append)以及groupby 和 pivot_table 函数在数据处理任务中有大量的应用。

更加详细的内容可以戳这里的官网:
Pandas官网

猜你喜欢

转载自blog.csdn.net/wangqingbang/article/details/90319536