Pandas

2023-12-16 02:51:34

【说明】文章内容来自《机器学习入门——基于sklearn》,用于学习记录。若有争议联系删除。???

1.安装

????????在anaconda prompt下使用pip install pandas

2.常用类

????????Pandas提供了众多的类,可满足不同的使用需求。常用的类如下:

  1. Series:序列,基本数据结构,为一维标签数组,能够保存任何数据类型。
  2. DataFrame:数据框,基本数据结构,一般为二维数组,是一组有序的列。
  3. Index:索引对象,负责管理轴标签和其他元数据(如轴名称)。
  4. groupby:分组对象,通过传人需要分组的参数实现对数据分组。
  5. Timestamp:时间戳对象,表示时间轴上的一个时刻。
  6. Timedelta:时间差对象,用来计算两个时间点的差值。

3.Series

????????series由数据以及标签(即索引)组成,series对象可以认为是Numpy的ndarray,类似于一维数组对象。

1.创建series

????????创建series对象的函数是series,主要参数是data和index,语法格式

pandas.Series(data = None, index = None, name = None)

参数说明:

  1. data:接收array或dict,表示接收的数据
  2. index:接收array或list,表示索引,它必须与数据长度相同
  3. name:接收string或list,表示Series对象的名称

(1)通过ndarray创建

import pandas as pd
import numpy as np
print('通过ndarray创建的Series为:\n', pd.Series(np.arange(5), 
                   index = ['a','b', 'c', 'd', 'e'], name = 'ndarray'))

(2)通过dict创建

import pandas as pd
dict = {'a':0, 'b':1, 'c':2, 'd':3}
print('通过ndarray创建的Series为:\n', pd.Series(dict))

(3)通过list创建

import pandas as pd
list1 = [0, 1, 2, 3, 4]
print('通过list创建的Series为:\n', pd.Series(list1, 
                    index = ['a','b', 'c', 'd', 'e'], name = 'list'))

2.series属性

????????series用于一下8个常用属性:

  1. values:以ndarray的格式返回Series对象的所有元素
  2. index:返回索引
  3. dtype:返回数据类型
  4. shape:返回形状
  5. nbytes:返回字节数
  6. ndim:维度
  7. size:个数
  8. T:转置

????????访问series属性:

import pandas as pd
series1 = pd.Series([1, 2, 3, 4])
print("series1:\n{}\n".format(series1))
print("series.values:{}\n".format(series1.values))#数据
print("series.index:{}\n".format(series1.index))#索引
print("series.shape:{}\n".format(series1.shape))#形状
print("series.ndim:{}\n".format(series1.ndim))#维数

【运行结果】

3.访问series数据

????????通过索引位置访问series数据。

import pandas as pd
series2 = pd.Series([1, 2, 3, 4, 5, 6, 7,],index = ["c", "D", "E", "F", "G", "A", "B"])
#通过索引位置访问数据子集
print("series2位于第1位置的数据为:",series2[0])
#通过索引名称(标签)访问数据
print("E is {}\n".format(series2["E"]))

【运行结果】

4.更新、插入和删除数据

(1)更新数据

import pandas as pd
list1 = [0, 1, 2, 3, 4]
series1 = pd.Series(list1, index = ['a', 'b', 'c', 'd', 'e'], name = 'list')
#更新元素
series1['a'] = 3
print('更新后的series1为:\n', series1)

(2)追加Series数据和插入单个数据

#追加数据
series2 = pd.Series([4, 5], index = ['f', 'g'])
series3 = [series1,series2]
series3 = pd.concat(series3)
print('在series1上追加series2后为:\n',series3) #pd.concat([df1, df2]

#删除数据
print('删除索引e对应的数据后为:\n',series3.drop('e'))

4.DataFrame

????????DataFrame是pandas的基本数据结构之一,类似于数据库中的表。DataFrame既有行索引也有列索引,可以看作series组成的dict,,每个series是DataFrame的一列。

1.创建DataFrame

????????基本语法:pandas.DataFrame(data = None, index = None, columns = None)?

参数说明:

  1. data:接收ndarray.dict.list和DataFrame,表示输入数据?
  2. index:接收index和ndarray,表示索引?
  3. columns:接收index和ndarray,表示标签?

(1)通过dict创建

import pandas as pd dict1 = {'coll':[0, 1, 2, 3, 4], 'col2': [5, 6, 7, 8, 9]} 
print('通过dict创建的DataFrame为:\n', pd.DataFrame(dict1, index = ['a', 'b', 'c', 'd', 'e']))

(2)通过list创建

import pandas as pd
list2 = [[0, 5], [1, 6], [2, 7], [3, 8], [4, 9]]
print('通过list创建为:\n',pd.DataFrame(list2, index = ['a', 'b', 'c', 'd', 'e'],columns = ['col1', 'col2']))

(3)通过series创建

import pandas as pd
noteSeries = pd.Series(["C", "D", "E", "F", "G", "A", "B"],index = [1, 2, 3, 4, 5, 6, 7])
weekdaySeries = pd.Series(["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],index = [1, 2, 3, 4, 5, 6, 7])
df4 = pd.DataFrame([noteSeries, weekdaySeries])
print("df4:\n{}\n".format(df4))

2.DataFrame属性

????????DataFrame是二维数据结构,包含列索引(列名),比Series具7DataFrame 常用的属性如下:

  1. values: 以?ndarray 的格式返回?DataFrame 对象的所有元素
  2. index:返回 DataFrame 对象的索引。
  3. columns:返回 DataFrame 对象的列标签。
  4. dtypes:返回 DataFrame 对象的数据类型。
  5. axes:返回 DataFrame 对象的轴标签。
  6. ndim:返回 DataFrame 对象的维度。
  7. size:返回 DataFrame 对象的个数。
  8. shape: 返回DataFrame对象的形状?

访问属性:

import pandas as pd
df = pd.DataFrame({'col1': [0, 1, 2, 3, 4, 5, 6], 'col2': [5, 6, 7, 8, 9, 10, 11]}, index = ['a', 'b', 'c', 'd', 'e', 'f', 'g'])
print('DataFrame的索引为:',df.index)#返回索引
print('列标签:',df.columns)
print('轴标签:',df.axes)
print('维度:',df.ndim)
print('形状:',df.shape)

3.访问DataFrame首尾数据

print('默认返回前5行数据:\n',df.head(4))
print('返回后3行数据:\n',df.tail(3))

4.更行DataFrame、插入列和删除列

(1)更新DataFrame

import pandas as pd
df = pd.DataFrame({'col1': [0,1, 2, 3, 4], 'col2': [5, 6, 7, 8, 9]}, index = ['a', 'b', 'c', 'd', 'e'])
print('DataFrame为:\n',df)
#更新列
df['col1'] = [10, 11, 12, 13, 14]
print('更新后的为:\n',df)

(2)插入列采用赋值的方法

import pandas as pd
df3 = pd.DataFrame({"note" : ["C", "D", "E", "F", "G", "A", "B"], "weekday": ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]})
print("df3:\n{}\n".format(df3))
df3['No.'] =pd.Series([1, 2, 3, 4, 5, 6, 7])#采用赋值的方法插入列
print("df3:\n{}\n".format(df3))
del df3["weekday"]                          #删除
print("df3:\n{}\n".format(df3))

(3)drop方法

????????基本语法:

DataFrame.drop(labels, axis = 0, level = None, inplace = False, errors = 'raise')

参数说明:

  1. labels:接收字符串或数组,表示删除的行或列的标签
  2. axis:接收0或1,表示执行操作的轴向,0表示删除行,1表示删除列,默认为0
  3. level:接收int值或者索引名,表示索引级别
  4. inplace:接收bool值。表示操作是否对原数据生效,默认为False

示例:

import pandas as pd
df = pd.DataFrame({'col1': [0, 1, 2, 3, 4],'col2': [5, 6, 7, 8, 9]}, index = ['a', 'b', 'c', 'd', 'e'])
df['col3'] = [15, 16, 17, 18, 19]
print('插入列后的Data:\n',df)
#删除列
df.drop(['col3'],axis = 1, inplace = True)
print('删除col3列后的Data为:\n',df)
#删除行
df.drop('a', axis = 0, inplace = True)
print('删除a行后的data为:\n',df)

文章来源:https://blog.csdn.net/qq_41566819/article/details/134943823
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。