版权声明:仅供学习使用,未经同意不得转发,不可使用商业用途。 https://blog.csdn.net/wangqingbang/article/details/90319536
前言:Pandas 是一个开源的软件库。DataFrames和Series是其两个主要数据结构,被广泛用于数据分析。Series 是单维索引数组,而DataFrames 是具有列级和行级索引的表格数据结构。Pandas 是预处理数据集的绝佳工具,可提供高度优化的性能。
1. Pandas基础用法
代码里面有详细的注释和用法示例:
在这里会用到一些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官网