import pandas as pd
Pandas中,有两个主要的数据结构:Series(以为数据结构)和DataFrame(二维的,表格型的数据结构)
一 .主要数据结构
Series 创建一个类似一维数组的对象,能够保存任何类型的数据,主要由一组数据和与之相关的索引两部分构成。
语法: pd.Series(data,index)
→data表示传入的数据,可以是ndarray、列表、字典等。
Index表示索引。 案例如图:
DataFrame 创建的是一个类似于二维数组或表格(如excel)的对象,每列可以是不同的数据类型。注:DataFrame的索引不仅有行索引、还有列索引
语法:pd.DataFrame(data,index,columns)
Index表示行标签,columns表示列标签
二.读写文件
读/写文本文件、EXCEL文件、数据库
- Read_csv() 函数的作用是将csv文件的数据读出来转换成DataFrame对象
- Read_table()可以读csv文件,也可以读Text文件
注: read_csv()是用“,”作为分隔符,read_table()使用“\t”作为分隔符。
- to_csv()的作用是将数据写入安东csv文件中
- read_excel()的将excel的数据读取出来转换程DataFrame对象
- to_excel() 的作用是将DataFrame对象写入对excel表格中
- 数据库的读取:
- read_sql_query 只能实现查询操作,不能直接读取数据库中的某个表
- read_sql_table 只能读取数据库中的某一个表格,不能实现查询操作
- read_sql 既能够读取,又能够查询
- to_sql 将数据写入到SQL数据库中
创建数据库连接:create_engine()
‘数据库产民名+连接工具名://用户名:密码@数据库IP地址:端口号/数据库名’
# engine=create_engine('mysql+pymysql://root:root@127.0.0.1:3306/bigdata')
三、DataFrame的常用属性和查看DataFrame对象中的数据
基础属性:
values 获取元素; index 获取索引; columns 获取列名; dtype 获取类型
size 元素个数; ndim 维度; shape 形状
T属性 实现行列转换
增删改查
查:使用loc()、iloc()访问方式
Loc()针对的是索引名称进行切片,iloc针对的是索引位置进行切片
DataFrame.loc[行索引名称或条件,列索引名称]
DataFrame.iloc[行索引位置,列索引位置]
loc()方法内部还可以传入条件表达式,结果会返回满足所有表达式的所有值;
改:原理是将这部分数据提取出来,重写赋值为新的数据,需要注意的是,更改后无法撤销。
Eg:将行索引为0的学生的成绩改成100,首先用loc切片提取出来,在重新赋值;
将李明(不知道行索引的情况下)的成绩修改为100
增 :为DataFrame添加一列的方法非常简单,只需要新建一个列索引,并对该索引下的数据进行赋值操作即可。
如果新增的一列的值是相同的,那么可以直接为其赋值一个常量
可以使用DataFrame.loc[row name]添加一行;
删 用drop()方法
语法: drop(labels,axis,inplace)
labels接收单一标签,表示要删除的索引或列标签,无默认值
axis =1 删除列元素; =0删除行元素 默认为0
inplace 表示对原数据是否生效 默认是 False
四、时间类型的数据分析
转换时间字符串为标准时间
Timestamp是时间类中较为基础的,也是较为常用的,pandas提供的to_datetime()函数能够实现这一目标。 基本语法: pandas.to_datetime(str)
提取时间序列数据信息
在多数涉及与时间相关的数据处理、统计分析的过程中,都需要提取时间中的年份、月份等数据。使用对应的Timestamp类属性就能够实现这一目的,
加减时间数据
生成固定频率的时间序列
使用date_range() 函数 语法:pandas.date_range(start,end,periods,fred)
start:表示起始时间 end:表示终止时间
periods:表示产生多少个时间戳索引值 取值为整数 fred:计时单位,默认是D(天)
如图所示
五.分组与聚合
分组:groupby() 聚合:agg()
①groupby()方法将数据集按照某些标准划分成若干个组。
语法:DataFrame.groupby(by=None,axis=0,sore=True)
By:用于确定进行分组的一局
Axis:表示分组轴方向 0表示按行1表示按列 默认为0
Sort:是否对分组表标签进行排序,默认为true
注:通过groupby()方法执行分组操作,会返回一个Groupby对象
使用Series调用groupby()方法返回的是SeriesGroupby对象
使用DataFrame调用groupby() 方法返回的DataFrameGroupBy对象
分组对象的groups属性可以返回分组信息,结果是一个形似字典的对象
分组对象的get_group()方法可以返回指定分组名的DataFrame
用于获得最大值最小值平均值的函数也用于简单的聚合分组
聚合 如果内置方法无法满足聚合要求是,则可以自定义函数,将她作为参数传给agg()方法,实现pandas对象的聚合运算。语法:DataFrame.agg(func, axis=0) func用于汇总数据的函数
函数可以是内置的,也可以是自定义的;
对某列数数据应用不同的函数
可以将两个函数的名称放在列表中,之后再调用agg()方法进行聚合作为参数传入
可以使用(name,function)
Eg:
如果希望对不同的列使用不用的函数,可以传入一个{“列名”:”函数名”}格式的字典 如图:
六 数据转换和数据应用
数据转换:希望保持与原数据集形状相同,可以使用transform()方法实现
语法:transform(func, anis=0)
数据应用:apply()方法类似于agg()方法,能够将函数应用于每一列,不用之处在于,与agg()方法相比,appaly()方法传入的函数作用于整个DataFrame或Series,
Apply(func, axis=0)
七 算术运算与排序
Pandas数据结构之间可以使用运算符运算,也可以使用算术运算方法来完成Pandas提供的算术运算方法有add()、sub()、mul().div()和mod()等函数。这些函数分别是完成加、减、乘除和求余数的运算。
函数的调用方法: obj1.add(obj2) 。其中obj1和obj2是Series或DataFrame对象,sub0、mul0、div()和mod()等函数的调用方法与add()相同
如果希望不使用NaN填充缺失数据,则可以在调用add0方法时提供fill value参数的值,fill value将会使用对象中存在的数据进行补充
排序
Pandas中按索引排序使用的是sort index()方法该方法可以用行索引或者列索引进行排序。
语法:sort index(axis = 0, level = None, ascending = True)
Pandas中用来按值排序的方法为sort_values()
语法:sort values(by, axis=0,ascending=True)
by:指定列名(axis=0或'index')或索引值(axis=1或columns') 。
axis: 若axis=0或'index',则按照指定列中数据大小排序;若axis=1或'columns,则按照指定索引中数据大小排序,默认axis=0。
ascending: 表示是否升序排列,默认为True表示升序。
将pandas部分整理出来学习使用~嘿嘿嘿!改完bug好睡觉!!