pandas学习
一、 pandas基础
1. 什么是pandas?
一个开源的python类库:用于数据分析、数据处理、数据可视化
- 高性能
- 容易使用的数据结构
- 容易使用的数据分析工具
很方便和其他类库一起使用:
-
numpy:用于数学计算
-
scikit-learn:用于机器学习
2. pandas 的安装
方法一:
python
pip3 install pandas
方法二:
python
下载使用Python类库集成安装包:anaconda link: https://www.anaconda.com
当今最流行的python数据分析发行版
已经安装了数据分析需要的几乎所有的类库0
3. pandas读取数据
pandas 需要先读取表格类型的数据,然后进行分析
数据类型 | 说明 | pandas读取方式 |
---|---|---|
csv ,tsv,txt | 用逗号,tab分割的纯文本文件 | pd.read_csv |
excel | 微软xls或者xlsx | pd.read_excel |
mysql | 关系型数据库表 | pd.read_sql |
-
读取csv文件
pythonimport 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)
4. Pandas数据结构
python
import pandas as pd
import numpy as np
-
DataFrame:二维数据、整个表格、多行多列
创建DataFrame的方法
-
根据多个字典序列创建dataframe
pythondata = { '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
pythonsl = pd.Series([1,'a',5.2,7])
-
创建一个具有标签索引的Series
pythons2 = pd.Series([1,'a',5.2,7], index=['d','e','f','g'])
-
使用python字典创建Series
pythonsdata = {'a':3500,'b'=4566, 'c'=12556,'d'=12435} s3 = pd.Series(sdata)
-
5. Pandas 数据查询
Pandas查询数据的几种方法
-
df.loc 根据行,列的标签值查询
-
使用单个标签值(label)查询数据
-
使用值列表批量查询
-
使用数值区间进行范围查询
-
使用条件表达式查询
pythondf.loc[df["age"]<30,:]
pythondf.loc[(df['a']<=30) & (df['d']>=15) & (df[f]=='ssa')& (df['s']==1), :]
-
调用函数查询
pythondf.loc[lambda df : (df['a']<30)& (df['d']>=15),:]
-
-
df.iloc 根据行,列的数字位置查询
-
df.where
-
df.query
注意:.loc既能查询,又能覆盖写入,强烈推荐
6. Pandas新增数据列
-
直接赋值 修改列数值
python将第b列的含有@符合的值替换掉 df.loc[:,"b"] = df["b"].str.replace("@","").astype('int32')
计算差值新增一列插值
pythondf[:,"chazhi"] = df["a"] - df["b"]
-
df.apply
pythonindex则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
python可以是lambda函数也可以是自定义函数 df.assign( cpu0_huashi = lambda x :x['CPU0_Temp']*9/5 + 32, cpu1_huashi = lambda x: x['CPU1_Temp']*9/5 + 32 )
-
按条件选择分组分别赋值
python先创建空列(这里第一张创建新列的方式 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"] = "温差正常"
7. Pandas的数据统计函数
-
汇总类统计
python提取所有数字列统计结果 df.describe()
-
唯一去重和按值计算
-
唯一性去重
一般不用于数值列,而是枚举,分类列
pythondf['b'].unique()
-
按值计算
df['a'].value_counts()
-
-
相关系数和协方差
用途(超级厉害):
-
两只股票,是不是同涨同跌?程度多大?正相关还是负相关?
-
产品销量的波动,跟哪些因素正相关、负相关,程度多大?
对于两个变量X、Y
-
协方差:衡量同向反向程度,如果协方差为正,说明X、Y同向变化,协方差越大说明同向程度越高;如果协方差为负,说明X、Y反向变化,协方差越小说明反向程度越高
pythondf.cov()
-
相关系数:衡量相似程度,当他们的相关系数为1时,说明两个变量变化时的正向相似度最大,当相关系数为-1时,说明两个变量变化的反向相似度最大
pythondf.corr() df['a'].corr(df['b']) 查看a和b的相关系数 df['a'].corr(df['b']-df['c'])
-
8. Pandas缺失值处理
pandas使用函数处理缺失值
-
isnull和notnull:检测是否为空值,可用于df和series
-
dropna:丢弃、删除缺失值 【下面是参数介绍】
- axis:删除还是列,{0 or 'index',1 or 'columns'},default 0
- how: 如果等于any则任何值为空都删除,如果等于all则所有值都为空才删除
- inplace:如果为True则修改当前df,否则返回新的df
-
fillna:填充空值 【下面是参数介绍】
- value:用于填充的值,可以是单个值,或者字典(key为列名,value是值)
- method:等于ffill使用前一个不为空的值填充for word fill;等于bfill使用后一个不为空的值填充back word fill
- axis:按行还是列填充,{0 or 'index',1 or 'columns'}
- inplace:如果为True则修改当前df,否则返回新的df