pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用于数据挖掘和数据分析,同时也提供数据清洗功能。
Pandas中常见的数据结构有两种:
Series | DataFrame |
---|---|
类似一维数组的对象 | 类似多维数组/表格数组,每列数据可以是不同的类型;索引包括行索引和列索引 |
-
Series
构建Series:ser_obj = pd.Series(range(10));
由索引和数据组成(索引在左<自动创建的>,数据在右);
获取数据和索引:ser_obj.index; ser_obj.values;
预览数据: ser_obj.head(n);ser_obj.tail(n) -
DateFrame
获取列数据:df_obj[col_idx]或df_obj.col_idx;
增加列数据:df_obj[new_col_idx] = data;
删除列:del df_obj[col_idx];
按值排序:sort_values(by = “label_name”)
常用方法:
Count | 非NA值得数量 |
---|---|
describe | 针对Series或各DataFrame列计算汇总统计 |
min/max | 计算最小值/最大值 |
argmin/argmax | 计算能够获取到最小值/最大值的索引位置 |
idxmin/idxmax | 计算能够获取到最小值/最大值的索引值 |
quantile | 计算样本的分位数(0-1) |
sum | 值的总和 |
mean | 值的平均数 |
median | 值的算术中位数(50%分位数) |
mad | 根据平均值计算平均绝对离差 |
var | 样本值的方差 |
std | 样本值的标准差 |
skew | 样本值的偏度(三阶距) |
kurt | 样本值的峰度(四阶距) |
cumsum | 样本值的累计和 |
cummin/cummax | 样本值的累计最小值和累计最大值 |
diff | 计算一阶差分(对时间序列很有用) |
pct_change | 计算百分数变化 |
-
处理丢失数据
dropna() 丢弃缺失数据;
fillna() 填补缺失数据 -
数据过滤
df[filter_condition] 依据filter_condition(条件)对df进行过滤
读写不同数据源的数据
1.数据库数据读取
pandas提供了读取与存储关系型数据库数据的函数与方法。除了pandas库外,还需要使用SQLAIchemy库建立对应的数据库连接。SQLAIchemy配合相应数据库的Python连接工具(例如MySQL数据库需要安装mysqlclient或者pymysql库),使用create_engine函数,建立一个数据库连接。
creat_engine 中填入的是一个连接字符串。在使用Python的SQLAlchemy时,MySQL和Oracle数据库连接字符串的格式如下:
数据库产品名+连接工具名: //用户名:密码 @ 数据库IP地址:数据库端口号/数据库名称? charset = 数据库数据编码
- read_sql_table只能够读取数据库的某一个表格,不能实现查询的操作。
pandas.read_sql_table(table_name, con, schema=None, index_col=None,coerce_float=True, columns=None) - read_sql_query则只能实现查询操作,不能直接读取数据库中的某个表。
pandas.read_sql_query(sql, con, index_col=None, coerce_float=True) - read_sql是两者的综合,既能够读取数据库中的某一个表,也能够实现查询操作。
pandas.read_sql(sql, con, index_col=None, coerce_float=True, columns=None)
pandas三个数据库数据读取函数的参数几乎完全一致,唯一的区别在于传入的是语句还是表名。
2.数据库数据存储
数据存储只有一个to_sql方法。