pandas是使用代码来处理数据,速度更快,灵活度更高
pandas中DataFrame其实就是excel类型数据
import numpy as np
import pandas as pd
s = pd.Series([1, 3, 5, 7, 9])
s
s = Series(data = [120,136,128,99],index = ['Math','Python','En','Chinese'])
df = DataFrame(data = np.random.randint(0,150,size = (10,3)),index = list('abcdefhijk'),columns=['Python','En','Math'])
判断数据是否存在空数据
DataFrame在显示的时候会将空数据表示成NaN(not a number)
df.isnull().sum():该方法统计了DataFrame中有多少个空数据,空数据的个数
df.tail() 显示数据的倒数5个
df[‘A’].value_counts() 统计A列中对应数据出现的个数
df = DataFrame(np.random.randint(0,150,size = (6,3)),columns=['Python','En','Math'],index =pd.MultiIndex.from_product([['张三','李四','王五'],['期中','期末']]) )
* mean,max,std,var,min,sum,等等
df.mean(axis = 1,level = 1).round(1)
#axis = 1代表在列的方向的进行计算,列是多层,level指定计算那一层索引
行和列的多层索引,进行转换
# 从列变成行
df.stack(level = 1)
#从行变成列
df2.unstack(level= 0 )
#原来数据一个5行,一个是6行,级联之后变成了11行
nd3 = np.concatenate([nd1,nd2],axis = 0)
#axis = 0行级联(第一维度的级联),axis = 1(第二个维度的级联,列的级联)
np.concatenate((nd1,nd2),axis = 1)
pandas读取数据csv类型的数据,可以读取的read_csv(参数)
DataFrame的高级功能,DataFrame索引和切片操作[],loc[],iloc[]
df[cond] cond 是条件,Series
pop2[cond][‘state/region’].unique()
cond = pop2['state/region'] == 'PR' 找到那些数据为空
pop2['state'][cond] = 'Puerto Rico' 对空数据进行赋值
#将难于进行补全的空数据进行删除,前提是,空数据比例很少
pop2.dropna(inplace=True)
pandas是操作数据的类库,数据特点行和列(excel表格),所以pandas进行操作是,excel类似,获取和数据操作类似
#pandas非常强大的,可以像查询数据库一样进行数据查询
pandas.query(sql)
pop5 = pop4.query("year = = 2012 and ages == 'total'")
#重新设置行索引
pop5.set_index(keys = 'state/region')
data = df.groupby(by = ['Hand'])[['weight','IQ']].mean().round(1)
#apply进行数据汇总
df.groupby(by = ['Hand'])[['weight']].apply(np.mean).round(1)
df.groupby(by = ['Hand'])[['weight']].transform(np.mean).round(1)
数据分析,非常重要,属性不同,结果不一样
pd.pivot_table(df,values=['weight','IQ'],index = ['Hand']).round(1)
pd.pivot_table(df,values=['weight','IQ'],index = ['Hand','sex'],aggfunc=['mean','max','min']).round(1)
pd.pivot_table(df,values=['weight','IQ'],index=['Smoke'],aggfunc={'weight':'mean','IQ':'max'})
pd.crosstab(index=cancer_t,columns=cancer_p,rownames=['确诊'],colnames=['预测'],margins=True)