栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

数据分析pandas

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据分析pandas

一、Pandas有两个主要的数据结构:Series和Dataframe (一)Series (1)结构

主要由一组数据与之相关的索引两部分构成。(索引在左,数据在右)

(2)多种构造代码方法:
1.
class pandas.Series( data = None, index = None, dtype = None, name = None, copy =False, fastpath = False)

data:表示传入的数据

index:表示索引,唯一且与数据长度相等,默认会自动穿件一个从0至n的整数索引。

2.传入一个列表创建一个Series类对象:
#创建Series类对象
ser_obj=pd.Series([1,2,3,4,5])

#创建且指定索引
ser_obj=pd.series([1,2,3,4,5],index=['a','b','c','d','e'])

3.dict进行构建:
year_data= {2001: 17.8, 2002: 20.1, 2003: 16.50}
ser_obj2 = pd.Series(year_data)
(3)对索引和数据操作

index:索引                  values:数据

#获得ser_obj的索引

ser_obj.index

#获得ser_obj的数据

ser_obj.values

#获得位置索引3对应的数据

ser_obj[3]

#索引对应的数据进行运算以后,结果替换原数据

ser_obj*2

(二)Dataframe (1)结构

注释: Dataframe的索引有 行索引,列索引。

(2)多种构建方法
1.
pandas.Dataframe(data = None,index = None,columns = None,
dtype = None,copy = False )

column:列标签

2.通过传入数组来创建Dataframe类对象

#创建数组

demo_arr=np.array([['a','b','c'],['d','e','f']])

# 基于数组创建Dataframe对象

df_obj = pd.Dataframe(demo_arr)

(3)增加和删除数列

#增加一列

df_obj['No4']=['g','h']

#删除一列

del df_obj['No3']

二、  Pandas索引操作及高级索引
(一)Pandas中的索引

Pandas中的索引都是Index类对象,称为索引对象,该对象不可进行修改,以保障数据的安全。

(二)reindex

作用:对原索引和新索引进行匹配

reindex()语法格式:

Dataframe.reindex(labels = None,index = None,
columns = None,axis = None,method = None,
copy = True,level = None,fill_value = nan,limit = None,tolerance = None )

如果不想填充为NaN,则可以用fill——value参数来制定缺失值。

ser_obj.reindex(['a', 'b', 'c', 'd', 'e', 'f'],
                                  fill_value = 6)

索引数据:
ser_obj = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])

ser_obj[2]    # 使用索引位置获取数据

ser_obj['c']   # 使用索引名称获取数据

#切片

ser_obj[2: 4]           # 使用位置索引进行切片
ser_obj['c': 'e']        # 使用索引名称进行切片

#不连续索引

# 通过不连续位置索引获取数据集
ser_obj[[0, 2, 4]]
# 通过不连续索引名称获取数据集
ser_obj[['a', 'c', 'd']]

#布尔型索引:将布尔型的数组索引作为模板筛选数据,返回与模板中True位置对应的元素。

# 创建布尔型Series对象

ser_bool = ser_obj > 2

# 获取结果为True的数据ser_obj[ser_bool]
loc与iloc:

loc:基于标签索引(索引名称),用于按标签选取数据。当执行切片操作时,既包含起始索引,也包含结束索引。

iloc:基于位置索引(整数索引),用于按位置选取数据。当执行切片操作时,只包含起始索引,不包含结束索引

三、算术运算与数据对齐

注释:Pandas执行算术运算时,会先按照索引进行对齐,对齐以后再进行相应的运算,没有对齐的位置会用NaN进行补齐。

1.add

如果希望不使用NAN填充缺失数据,则可以在调用add方法时提供fill_value参数的值,fill_value将会使用对象中存在的数据进行补充。

 #执行加法运算,补充缺失值
obj_one.add(obj_two, fill_value = 0)
四、数据排序
1.索引排序 sort_index()
sort_index(axis = 0,level = None,ascending = True,inplace = False,kind =' quicksort ',na_position ='last',sort_remaining = True )

 axis:轴索引,0表示index(按行),1表示columns(按列)。  level:若不为None,则对指定索引级别的值进行排序。  ascending:是否升序排列,默认为True表示升序。

2.升降序排列
ser_obj = pd.Series(range(10, 15), index=[5, 3, 1, 3, 2])
# 按索引进行升序排列
ser_obj.sort_index()
# 按索引进行降序排列
ser_obj.sort_index(ascending = False)
3.按值排序:sort_values()
sort_values(by,axis=0, ascending=True, inplace=False, kind='quicksort',na_position='last')

注释:by参数表示排序的列,na_position参数只有两个值:first和last,若设为first,则会将NaN值放在开头;若设为False,则会将NaN值放在最后。

ser_obj = pd.Series([4, np.nan, 6, np.nan, -3, 2])
# 按值升序排列
ser_obj.sort_values()

五、统计计算和描述 1.一次性输出多个统计指标:
describe(percentiles=None,include=None,exclude=None)
#percentiles:输出中包含的百分数,位于[0,1]之间。如果不设置该参数,则默认为[0.25,0.5,0.75],返回25%,50%,75%分位数。

六、层次化索引

层次化引索引可以理解为单层索引的延伸,即在一个轴方向有多层索引。

可分为 内层索引 和 外层索引

例子:

ser_obj = Series([50, 60, 40, 94, 63, 101, 200, 56, 45],
                            index=[['小说', '小说', '小说',
                                          '散文随笔', '散文随笔', '散文随笔',
	                     	      '传记', '传记', '传记'],
	                    	     ['高山上的小邮局', '失踪的总统', '绿毛水怪',
	                     	      '皮囊', '浮生六记', '自在独行',
	                     	      '梅西', '老舍自传', '库里传']]

# 获取所有外层索引为“小说”的数据

ser_obj['小说']

#获取内层索引对应的数据

ser_obj[:,'自在独行']

 

# 交换外层索引与内层索引位置

ser_obj.swaplevel()

交换分层顺序是指交换外层索引和内层索引的位置。

    

七、读写数据操作

(一)CSV

CSV文件是一种纯文本文件,可以使用任何文本编辑器进行编辑,它支持追加模式,节省内存开销

(二)读取和写入
#写入
to_csv(path_or_buf=None,sep=',',na_rep='',float_format=None,columns=None,header=True, index=True, index_label=None, mode='w‘, ...)

path_or_buf:文件路径。 index:默认为True,若设为False,则将不会显示索引。 sep:分隔符,默认用“,”隔开。

#读取
read_csv(filepath_or_buffer,sep=',', delimiter=None, header='infer', names=None, index_col=None, usecols=None, prefix=None, ...)

sep:指定使用的分隔符,默认用“,”分隔。
header:指定行数用来作为列名。
names:用于结果的列名列表。如果文件不包含标题行,则应该将该参数设置为None。
(三)写入excel和读取excel

#写入

to_excel(excel_writer,sheet_name='Sheet1',na_rep='',
float_format=None, columns=None, header=True, index=True, ...)

excel_writer:表示读取的文件路径。 sheet_name:表示工作表的名称,默认为“Sheet1”。 na_rep:表示缺失数据。 index:表示是否写行索引,默认为True。

#读取 

pandas.read_excel(io,sheet_name=0,header=0,names=None,index_col=None, **kwds)

io:表示路径对象。 sheet_name:指定要读取的工作表,默认为0。 header:用于解析Dataframe的列标签。 names:要使用的列名称。

(四)读取HTML表格数据

pandas.read_html(io, match='.+', flavor=None,header=None, index_col=None,skiprows=None, attrs=None)

io:表示路径对象。 header:表示指定列标题所在的行。 index_col:表示指定行标题对应的列。 attrs:默认为None,用于表示表格的属性值。

(五)读写数据库

to_sql(name,con,schema = None,if_exists ='fail',index = True,index_label = None,chunksize = None,dtype = None )

name:表示数据库表的名称。 con: 表示数据库的连接信息。 if_exists:可以取值为fail、replace或append,默认为’fail’。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/753806.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号