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’]]
创建布尔型Series对象 ser_bool = ser_obj > 2
获取结果为True的数据ser_obj[ser_bool]
loc:基于标签索引(索引名称),用于按标签选取数据。当执行切片操作时,既包含起始索引,也包含结束索引。
iloc:基于位置索引(整数索引),用于按位置选取数据。当执行切片操作时,只包含起始索引,不包含结束索引。
3 . 算术运算与数据对齐
执行加法运算,补充缺失值 obj_one.add(obj_two, fill_value = 0)
4 . 数据排序
Pandas中按索引排序使用的是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表示升序.
ser_obj = pd.Series(range(10, 15), index=[5, 3, 1, 3, 2]) # 按索引进行升序排列 ser_obj.sort_index() # 按索引进行降序排列 ser_obj.sort_index(ascending = False)
df_obj = pd.DataFrame(np.arange(9).reshape(3, 3), index=[4, 3, 5])
按行索引升序排列 df_obj.sort_index()
按行索引降序排列 df_obj.sort_index(ascending=False)
按值排序
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()
在DataFrame中,sort_values()方法可以根据一个或多个列中的值进行排序,但是需要在排序时,将一个或多个列的索引传递给by参数才行
df_obj = pd.DataFrame([[0.4, -0.1, -0.3, 0.0], [0.2, 0.6, -0.1, -0.7], [0.8, 0.6, -0.5, 0.1]]) # 对列索引值为2的数据进行排序 df_obj.sort_values(by=2)
5.统计计算与描述
一次性输出多个统计指标:describe(percentiles=None, include=None, exclude=None)
注释:percentiles:输出中包含的百分数,位于[0,1]之间。如果不设置该参数,则默认为[0.25,0.5,0.75],返回25%,50%,75%分位数
- 层次化索引
在一个轴方向上具有多层索引
在构造方法的index参数中传入一个嵌套列表:
mulitindex_series = pd.Series([15848,13472,12073.8,7813, 7446,6444,15230,8269],
index=[[‘河北省’,’河北省’,’河北省’,’河北省’,
‘河南省’,’河南省’,’河南省’,’河南省’],
[‘石家庄市’,’唐山市’,’邯郸市’,’秦皇岛市’,
‘郑州市’,’开封市’,’洛阳市’,’新乡市’]])
在创建层次化索引对象时,嵌套函数中两个列表的长度必须是保持一致的,否则将会出现ValueError错误。
‘创建层次化索引
MultiIndex.from_tuples():将元组列表转换为MultiIndex。
MultiIndex.from_arrays():将数组列表转换为MultiIndex。
MultiIndex.from_product():从多个集合的笛卡尔乘积中创建一个MultiIndex。
将包含若干个元组的列表转换为MultiIndex对象:
list_tuples = [(‘A’,’A1′), (‘A’,’A2′), (‘B’,’B1′),(‘B’,’B2′), (‘B’,’B3′)] # 根据元组列表创建一个MultiIndex对象 multi_index = MultiIndex.from_tuples(tuples=list_tuples, names=[ ‘外层索引’, ‘内层索引’])
将数组列表转换为MultiIndex对象:
multi_array = MultiIndex.from_arrays(arrays =[[‘A’, ‘B’, ‘A’, ‘B’, ‘B’], [‘A1’, ‘A2’, ‘B1’, ‘B2’, ‘B3’]], names=[‘外层索引’,’内层索引’])
从多个集合的笛卡尔乘积中创建一个MultiIndex对象:
numbers = [0, 1, 2] colors = [‘green’, ‘purple’] multi_product = pd.MultiIndex.from_product(iterables=[numbers, colors], names=[‘number’, ‘color’])
根据书籍统计表,创建一个具有多层索引的Series对象,示例如下:
ser_obj = Series([50, 60, 40, 94, 63, 101, 200, 56, 45], index=[[‘小说’, ‘小说’, ‘小说’, ‘散文随笔’, ‘散文随笔’, ‘散文随笔’, ‘传记’, ‘传记’, ‘传记’], [‘高山上的小邮局’, ‘失踪的总统’, ‘绿毛水怪’, ‘皮囊’, ‘浮生六记’, ‘自在独行’, ‘梅西’, ‘老舍自传’, ‘库里传’]])
从表中筛选出外层索引标签为小说的数据:
获取所有外层索引为”小说”的数据 ser_obj[‘小说’]
操作内层索引获取该书籍的类别与销售数量:
获取内层索引对应的数据 ser_obj[:,’自在独行’]
交换分层顺序是指交换外层索引和内层索引的位置:
交换分层顺序的操作:# 交换外层索引与内层索引位置 ser_obj.swaplevel()
按照分层索引对数据排序:
sort_index(axis = 0,level = None,ascending = True,inplace = False,kind =’ quicksort ‘,na_position =’last’, sort_remaining = True,by = None )
注:by:表示按指定的值排序。 ascending:布尔值,表示是否升序排列,默认为True。
在使用sort_index()方法排序时,会优先选择按外层索引进行排序,然后再按照内层索引进行排序。
7 . 读写数据操作
在进行数据分析时,将待分析的数据存储到本地中,之后再对存储文件进行读取.
CSV文件是一种纯文本文件,可以使用任何文本编辑器进行编辑,它支持追加模式,节省内存开销。
to_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()函数的作用是将CSV文件的数据读取出来,转换成DataFrame对象展示:
read_csv(filepath_or_buffer,sep=’,’, delimiter=None, header=’infer’, names=None, index_col=None, usecols=None, prefix=None, …)
注:sep:指定使用的分隔符,默认用”,”分隔。 header:指定行数用来作为列名。 names:用于结果的列名列表。如果文件不包含标题行,则应该将该参数设置为None。
如果希望读取Text文件,既可以用read_csv()函数,也可以使用read_table()函数。
read_csv()与read_table()函数的区别在于使用的分隔符不同,前者使用”,”作为分隔符,而后者使用”\t”作为分隔符。
Excel的文件扩展名有.xls和.xlsx两种。
read_excel()函数的作用是将Excel中的数据读取出来,转换成DataFrame展示:
pandas.read_excel(io,sheet_name=0,header=0,names=None,index_col=None, **kwds)
注:io:表示路径对象。 sheet_name:指定要读取的工作表,默认为0。 header:用于解析DataFrame的列标签。 names:要使用的列名称。
在浏览网页时,有些数据会在HTML网页中以表格的形式进行展示。
可以使用read_html()函数进行读取,并返回一个包含多个DataFrame对象的列表
pandas.read_html(io, match=’.+’, flavor=None,header=None, index_col=None,skiprows=None, attrs=None)
注:io:表示路径对象。 header:表示指定列标题所在的行。 index_col:表示指定行标题对应的列。 attrs:默认为None,用于表示表格的属性值。
Pandas 支持Mysql、Oracle、SQLite等主流数据库的读写操作。
!!!!:在连接mysql数据库时,这里使用的是mysqlconnector驱动,如果当前的Python环境中没有改模块,则需要使用pip install mysqlconnector命令安装该模块。
read_sql()函数既可以读取整张数据表,又可以执行SQL语句:
pandas.read_sql(sql,con,index_col=None,coerce_float=True,params=None,parse_dates=None, columns=None, chunksize=None)
注:sql:表示被执行的SQL语句。
con:接收数据库连接,表示数据库的连接信息。
columns:从SQL表中选择列名列表。
!!!!:通过create_engine()函数创建连接时,需要指定格式如下:’数据库类型+数据库驱动名称://用户名:密码@机器地址:端口号/数据库名’。
to_sql()方法的功能是将Series或DataFrame对象以数据表的形式写入到数据库中:
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’。
总结:
Original: https://blog.csdn.net/Devilunlock/article/details/123311431
Author: Devilunlock
Title: 数据分析工具Pandas
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/739912/
转载文章受原作者版权保护。转载请注明原作者出处!