Pandas
Seriesh和Dataframe
series是个定长的字典序列
dataFrame数据结构类似数据表
import pandas as pd
from pandas import Series, DataFrame
data = {'Chinese': [66, 95, 93, 90,80],'English': [65, 85, 92, 88, 90],'Math': [30, 98, 96, 77, 90]}
df1= DataFrame(data)
df2 = DataFrame(data, index=['ZhangFei', 'GuanYu', 'ZhaoYun', 'HuangZhong', 'DianWei'], columns=['English', 'Math', 'Chinese'])
print df1
print df2
数据导入和输出
import pandas as pd
pd.read_csv()
pd.read_excel()
数据清洗
1.删除不必要的行列
df2 = df2.drop(columns=['Chinese'])
df2 = df2.drop(index=['ZhangFei'])
2.重命名列名
df2.rename(columns={'Chinese': 'YuWen', 'English': 'Yingyu'}, inplace = True)
3.去重复值
df = df.drop_duplicates() #去除重复行
4.补缺失值
5.更改数据格式
df2['Chinese'].astype('str')
df2['Chinese'].astype(np.int64)
6.处理空格
查找空格
df.isnull()
#如果想知道哪列存在空值
df.isnull().any()
#删除左右两边空格
df2['Chinese']=df2['Chinese'].map(str.strip)
#删除左边空格
df2['Chinese']=df2['Chinese'].map(str.lstrip)
#删除右边空格
df2['Chinese']=df2['Chinese'].map(str.rstrip)
7.删除特殊字符
df2['Chinese']=df2['Chinese'].str.strip('$')
8.大小写转换
#全部大写
df2.columns = df2.columns.str.upper()
#全部小写
df2.columns = df2.columns.str.lower()
#首字母大写
df2.columns = df2.columns.str.title()
9.apply函数
df['name'] = df['name'].apply(str.upper)
也可以定义某个函数进行相关操作
def double_df(x):
return 2*x
df1[u'语文'] = df1[u'语文'].apply(double_df)
#新增两列
def plus(df,n,m):
df['new1'] = (df[u'语文']+df[u'英语']) * m
df['new2'] = (df[u'语文']+df[u'英语']) * n
return df
df1 = df1.apply(plus,axis=1,args=(2,3,))
数据统计
数据表合并
df1 = DataFrame({'name':['ZhangFei', 'GuanYu', 'a', 'b', 'c'], 'data1':range(5)})
df2 = DataFrame({'name':['ZhangFei', 'GuanYu', 'A', 'B', 'C'], 'data2':range(5)})
包括
- 基于指定列进行连接
- inner内连接
- left左连接
- right右连接
- outer外连接
用sql方式打开pandas
import pandas as pd
from pandas import DataFrame
from pandasql import sqldf, load_meat, load_births
df1 = DataFrame({'name':['ZhangFei', 'GuanYu', 'a', 'b', 'c'], 'data1':range(5)})
pysqldf = lambda sql: sqldf(sql, globals())
sql = "select * from df1 where name ='ZhangFei'"
print pysqldf(sql)
lambda
lambda argument_list: expression
pysqldf = lambda sql: sqldf(sql, globals())