一个开源的python类库:用于数据分析、数据处理、数据可视化
很方便和其他类库一起使用:
numpy:用于数学计算
scikit-learn:用于机器学习
方法一:
pip3 install pandas
方法二:
下载使用Python类库集成安装包:anaconda link: https://www.anaconda.com
当今最流行的python数据分析发行版
已经安装了数据分析需要的几乎所有的类库0
pandas 需要先读取表格类型的数据,然后进行分析
数据类型 | 说明 | pandas读取方式 |
---|---|---|
csv ,tsv,txt | 用逗号,tab分割的纯文本文件 | pd.read_csv |
excel | 微软xls或者xlsx | pd.read_excel |
mysql | 关系型数据库表 | pd.read_sql |
读取csv文件
import os
import pandas as pd
fpath = "E:\MyProject\DataAnalysis\my_pandas\Datas\cpu_temp.csv"
# 读取csv文件的所有数据
datas = pd.read_csv(fpath)
# 查看前几行的数据 默认前5行
da = datas.head()
print(da)
# 查看数据的形状,返回行和列
ds = datas.shape
print(ds)
# 查看列名列表
df = datas.columns
print(df)
# 查看索引列
dg = datas.index
print(dg)
# 查看每列的数据类型
dh = datas.dtypes
print(dh)
import pandas as pd
import numpy as np
DataFrame:二维数据、整个表格、多行多列
创建DataFrame的方法
根据多个字典序列创建dataframe
data = {
'age':[23,45,32,56,32,54,22],
'id': [1,2,3,4,5,6,7]
'year': [1991,1992,1993,1994,1995,1996,1997]
}
d1 = pandas.DataFrame(data)
df.columns 和df.index
Series: 一维数据、一行或一列
创建Series的三种方法:
仅使用数据列表即可产生最简单的Series
sl = pd.Series([1,'a',5.2,7])
创建一个具有标签索引的Series
s2 = pd.Series([1,'a',5.2,7], index=['d','e','f','g'])
使用python字典创建Series
sdata = {'a':3500,'b'=4566, 'c'=12556,'d'=12435}
s3 = pd.Series(sdata)
Pandas查询数据的几种方法
df.loc 根据行,列的标签值查询
使用单个标签值(label)查询数据
使用值列表批量查询
使用数值区间进行范围查询
使用条件表达式查询
df.loc[df["age"]<30,:]
df.loc[(df['a']<=30) & (df['d']>=15) & (df[f]=='ssa')& (df['s']==1), :]
调用函数查询
df.loc[lambda df : (df['a']<30)& (df['d']>=15),:]
df.iloc 根据行,列的数字位置查询
df.where
df.query
注意:.loc既能查询,又能覆盖写入,强烈推荐
直接赋值 修改列数值
将第b列的含有@符合的值替换掉
df.loc[:,"b"] = df["b"].str.replace("@","").astype('int32')
计算差值新增一列插值
df[:,"chazhi"] = df["a"] - df["b"]
df.apply
index则axis=0 columns则axis=1
def get_temp_type(x):
if x["CPU0_Temp"]>60:
return '高温'
elif x["CPU0_Temp"] < 50:
return '低温'
return '常温'
df.loc[:,'temp_type'] = df.apply(get_temp_type,axis=1)
df['temp_type'].value_counts()
df.assign
可以是lambda函数也可以是自定义函数
df.assign(
cpu0_huashi = lambda x :x['CPU0_Temp']*9/5 + 32,
cpu1_huashi = lambda x: x['CPU1_Temp']*9/5 + 32
)
按条件选择分组分别赋值
先创建空列(这里第一张创建新列的方式
df["cup_type"] = ''
df.loc[df['CPU1_Temp']- df['CPU0_Temp']>10,"cpu_type"] = "温差大"
df.loc[df['CPU1_Temp']- df['CPU0_Temp']<=10,"cpu_type"] = "温差正常"
汇总类统计
提取所有数字列统计结果
df.describe()
唯一去重和按值计算
唯一性去重
一般不用于数值列,而是枚举,分类列
df['b'].unique()
按值计算
df[‘a’].value_counts()
相关系数和协方差
用途(超级厉害):
两只股票,是不是同涨同跌?程度多大?正相关还是负相关?
产品销量的波动,跟哪些因素正相关、负相关,程度多大?
对于两个变量X、Y
协方差:衡量同向反向程度,如果协方差为正,说明X、Y同向变化,协方差越大说明同向程度越高;如果协方差为负,说明X、Y反向变化,协方差越小说明反向程度越高
df.cov()
相关系数:衡量相似程度,当他们的相关系数为1时,说明两个变量变化时的正向相似度最大,当相关系数为-1时,说明两个变量变化的反向相似度最大
df.corr()
df['a'].corr(df['b']) 查看a和b的相关系数
df['a'].corr(df['b']-df['c'])
pandas使用函数处理缺失值
isnull和notnull:检测是否为空值,可用于df和series
dropna:丢弃、删除缺失值 【下面是参数介绍】
fillna:填充空值 【下面是参数介绍】