Pandas
【说明】文章内容来自《机器学习入门——基于sklearn》,用于学习记录。若有争议联系删除。???
1.安装
????????在anaconda prompt下使用pip install pandas
2.常用类
????????Pandas提供了众多的类,可满足不同的使用需求。常用的类如下:
- Series:序列,基本数据结构,为一维标签数组,能够保存任何数据类型。
- DataFrame:数据框,基本数据结构,一般为二维数组,是一组有序的列。
- Index:索引对象,负责管理轴标签和其他元数据(如轴名称)。
- groupby:分组对象,通过传人需要分组的参数实现对数据分组。
- Timestamp:时间戳对象,表示时间轴上的一个时刻。
- Timedelta:时间差对象,用来计算两个时间点的差值。
3.Series
????????series由数据以及标签(即索引)组成,series对象可以认为是Numpy的ndarray,类似于一维数组对象。
1.创建series
????????创建series对象的函数是series,主要参数是data和index,语法格式
pandas.Series(data = None, index = None, name = None)
参数说明:
- data:接收array或dict,表示接收的数据
- index:接收array或list,表示索引,它必须与数据长度相同
- 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个常用属性:
- values:以ndarray的格式返回Series对象的所有元素
- index:返回索引
- dtype:返回数据类型
- shape:返回形状
- nbytes:返回字节数
- ndim:维度
- size:个数
- 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)?
参数说明:
- data:接收ndarray.dict.list和DataFrame,表示输入数据?
- index:接收index和ndarray,表示索引?
- 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 常用的属性如下:
- values: 以?ndarray 的格式返回?DataFrame 对象的所有元素
- index:返回 DataFrame 对象的索引。
- columns:返回 DataFrame 对象的列标签。
- dtypes:返回 DataFrame 对象的数据类型。
- axes:返回 DataFrame 对象的轴标签。
- ndim:返回 DataFrame 对象的维度。
- size:返回 DataFrame 对象的个数。
- 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')
参数说明:
- labels:接收字符串或数组,表示删除的行或列的标签
- axis:接收0或1,表示执行操作的轴向,0表示删除行,1表示删除列,默认为0
- level:接收int值或者索引名,表示索引级别
- 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)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!