daf
import os
os.chdir(‘C:\he\File’)# 数据的读写
from pandas import Series, DataFrame
a=pd.read_excel(‘test.xlsx’)#读取excel数据
df.to_excel(‘test3.xlsx’)#写入到excel
a.to_excel(‘test4.xlsx’)
a.head()#查看前几行
a.tail()#查看后几行
a.sample(n=10)#随机抽取n行
a.shape#查看shape
a.info()#查看缺失值,其中object是字符串的意思
a.describe()#统计类描述
pd.read_clipboard()#从剪贴板复制
df1.iloc[0,:]=np.nan 取一行数据 写数字
df1[‘市盈率’] 取一列数据
df1[‘市盈率’].notnull() 返回某个字段是否为空, 布尔值
df.two.isnull()#选择第二列
s[(s>2)& (s<4)]#序列的过滤
df[[‘A’,‘C’]]#选择多列
df[‘A’]#选择列
df.A#选择列
df.loc[‘a’:‘c’,[‘A’,‘C’]]# 选择多行,多列
df.loc[:,[‘A’,‘C’]]# 选择多列
df.loc[df.C > 0,:]#选取C列大于零的所有数据 df[df.c>0]
df.loc[df[‘C’]>0,:] 用点或者[字段名]都可以
df.loc[:, df.loc[‘a’] > 0]#选择a行大于零的所有数据
df.loc[df.A > 0, df.loc[‘a’] > 0]#选A列大于零,a行大于零的所有
df.loc[(df[‘A’]>0) &(df[‘C’]>0),:] # df[(df[‘A’]>0) &(df[‘C’]>0),:]待确认是不是可以
df[df.A<0]=0#第A列所有小于零的所有元素置零
df[df.B<0]#选择B列小于零的所有数据
df[(df.A>0) & (df.C>0)]#A列大于零且C列大于零的所有行
df[(df.A>0) | (df.C>0)]#A列大于零或C列大于零的所有行
df1=df[df>0]
df1#产生缺失值, 不符合要求的用nan填充
df1[df1[‘A’].notnull() & df1[‘C’].notnull()]#选择A列和C列都是非空的行
df[df[‘E’].isin([‘two’,‘three’])]#选择E列里面是two和three的所有行
df[df.E.map(lambda x:x.startswith(‘t’))]#选择以t开头的所有行
df[(df.E.map(lambda x:x.startswith(‘o’)))&(df.C>0)]#多重选择,选择第E列以O开头,C列大于零的所有行
df[(df.A>df.B)&(df.C<df.D)]#选择A列大于B列并且C列小于D列的所有行
obj1.drop(‘e’,inplace=True)#原地删除
obj1.drop([‘a’,‘c’])#删除多个
df[‘four’]=6#增加列,自动长度匹配
df[‘six’]=df[‘one’]+df[‘two’]#增加列
df.drop([‘a’,‘c’],axis=0)#删除行,指定轴
df.drop([‘one’,‘five’],axis=1)#删除列,指定轴
df1[np.abs(df1.three)>3]#单列是选择,选择three列里面大于3的所有行
s[s.isnull()]#输出缺失值的索引和值
s[s.notnull()]#方法1 通过使用notnull方法来获取非缺失数据,none也会被过滤
s.dropna(inplace=True)#inplace为True时原地删除
df.iloc[0:3,1]=np.nan
df.dropna(axis=0)#删除有缺失值的行
df.dropna(axis=1)#删除有缺失值的列,inplace=True原地删除
df.dropna(axis=0,thresh=4)#删除非nan的数量小于4的行
df.dropna(axis=1,thresh=2)#删除非nan的数量小于2的列
df.drop_duplicates(keep=‘first’) #所有的列都相同,认为是重复,保留第一行
df.drop_duplicates([‘value1’],keep=‘first’)#value1相同则去重复
df.drop_duplicates([‘value1’],keep=‘last’)#value1相同则去重复
df.replace(‘小明’,‘xiaoming’)#替换是新生成
df.replace([‘小丽’,‘小花’],[‘xiaoli’,‘xiaohua’])#新生成,可设置inplace=True原地替换
df.replace(’–’,np.nan)
df.fillna(0)#使用固定数进行缺失值的填充
df.fillna({1:10,2:20})#不同列使用不同的数填充
df.fillna(df.mean())#使用列平均进行填充
df.interpolate()#线性插值
frame.sort_index(axis=0, ascending=True)#按行索引进行排序,默认升序,看首字母
frame.sort_values(by=‘b’, ascending=True)#按b列大小进行排序
import pandas as pd
import os
os.chdir(‘C:\he\File’)
df = pd.read_csv(‘taobao_data.txt’)
df1.sort_values([‘位置’,‘价格’],ascending=[True,False])
data.sum(axis=1)
data.sum() 默认列加总
data.mean()
data.var()
data.std()
data.count()
data.describe()
df.apply(lambda x:x*10)
df_pop[‘State’]=df_pop[‘State’].apply(lambda x:x.strip())[0]#去除空格
df_pop[‘Population’]=df_pop[‘Population’].apply(lambda x:np.int64(x.replace(’,’,’’)))
df_pop=df_pop.sort_values([‘State’,‘City’])
df_pop.set_index([‘State’,‘City’,‘Population’]).sort_index(level=2)
df_pop.set_index([‘State’,‘City’]).sort_values(‘Population’)
df.sort_values(‘a’,ascending=False)
df=df.sort_values([‘位置’,‘价格’],ascending=[True,False])
df.set_index([‘位置’,‘价格’,‘成交量’]).sort_index(level=2)#按成交量排序
data.corr()#相关系数
df.count()#每一列非空值的数量
t1=pd.Timestamp(‘2017/10/01’)#时间戳
rng1 = pd.date_range(‘1/10/2017’, periods=24, freq=‘H’)#生成时间索引,以小时为单位,24个小时
pd.date_range(‘1/10/2017’,‘2/10/2017’,freq=‘D’)
t1=pd.to_datetime(‘1/10/2017 10:00’) #输入标量,形成时间戳
df1 = DataFrame(np.ones((2,4))*0, columns=[‘a’,‘b’,‘c’,‘d’])
df2 = DataFrame(np.ones((4,3))*1, columns=[‘b’,‘d’,‘e’])
res = pd.concat([df1, df2], axis=1, join=‘outer’)#外连接合并,默认为外连接合并
df1 = DataFrame(np.ones((2,4))*0, columns=[‘a’,‘b’,‘c’,‘d’])
df2 = DataFrame(np.ones((4,3))*1, columns=[‘b’,‘d’,‘e’])
res = pd.concat([df1, df2], axis=1, join=‘inner’)#内连接合并,多余的数据会丢弃
#纵向合并,列数要一致
res = pd.concat([df1, df2, df3], axis=0) #axis=0 代表上下的方向,axis=1 代表左右,df3不足的部分补NaN,重置index,从0开始自增
#纵向拼,append,只有纵向,没有横向
df1 = DataFrame(np.ones((4,4))*0, columns=[‘a’,‘b’,‘c’,‘d’])
df2 = DataFrame(np.ones((4,4))*1, columns=[‘a’,‘b’,‘c’,‘d’])
res = df1.append(df2, ignore_index=True)
res
left = pd.DataFrame({‘key’: [‘K0’, ‘K1’, ‘K2’, ‘K3’],
‘A’: [‘A0’, ‘A1’, ‘A2’, ‘A3’],
‘B’: [‘B0’, ‘B1’, ‘B2’, ‘B3’]})
right = pd.DataFrame({‘key’: [‘K0’, ‘K1’, ‘K2’, ‘K3’],
‘C’: [‘C0’, ‘C1’, ‘C2’, ‘C3’],
‘D’: [‘D0’, ‘D1’, ‘D2’, ‘D3’]})
res = pd.merge(left, right, on=‘key’)
left = pd.DataFrame({‘key1’: [‘K0’, ‘K0’, ‘K1’, ‘K2’],
‘key2’: [‘K0’, ‘K1’, ‘K0’, ‘K1’],
‘A’: [‘A0’, ‘A1’, ‘A2’, ‘A3’],
‘B’: [‘B0’, ‘B1’, ‘B2’, ‘B3’]})
right = pd.DataFrame({‘key1’: [‘K0’, ‘K1’, ‘K1’, ‘K2’],
‘key2’: [‘K0’, ‘K0’, ‘K0’, ‘K0’],
‘C’: [‘C0’, ‘C1’, ‘C2’, ‘C3’],
‘D’: [‘D0’, ‘D1’, ‘D2’, ‘D3’]})
res = pd.merge(left, right, on=[‘key1’, ‘key2’], how=‘outer’)#outer
res = pd.merge(left, right, on=[‘key1’, ‘key2’], how=‘left’)#以左侧为准
res = pd.merge(left, right, on=[‘key1’, ‘key2’], how=‘right’)#以右侧为
#join
df1 = pd.DataFrame({‘key’: [‘K0’, ‘K1’, ‘K2’, ‘K3’, ‘K4’, ‘K5’],‘A’: [‘A0’, ‘A1’, ‘A2’, ‘A3’, ‘A4’, ‘A5’]})
df1
df2 = pd.DataFrame({‘key’: [‘K0’, ‘K1’, ‘K2’],‘B’: [‘B0’, ‘B1’, ‘B2’]})
df2
df1.join(df2, how=‘outer’,lsuffix=‘A’, rsuffix=‘B’) # 如果两个表的字段名相同, 那么可以在后缀加A
df.stack()#将行转为列
df1.unstack()#将列转为行
from pandas import DataFrame,Series
df = DataFrame({‘类别’:[‘水果’,‘水果’,‘水果’,‘蔬菜’,‘蔬菜’,‘肉类’,‘肉类’],
‘产地’:[‘美国’,‘中国’,‘中国’,‘中国’,‘新西兰’,‘新西兰’,‘美国’],
‘种类’:[‘苹果’,‘梨’,‘草莓’,‘番茄’,‘黄瓜’,‘羊肉’,‘牛肉’],
‘数量’:[5,5,9,3,2,10,8],
‘价格’:[5,5,10,3,3,13,20]})
df[[‘类别’,‘数量’]].groupby(‘类别’).sum()#类别的和
df[[‘类别’,‘价格’]].groupby(‘类别’).mean()#平均价格
df[[‘产地’,‘数量’]].groupby(‘产地’).sum() 拿出来两个字段做分组,
df.groupby([‘产地’,‘类别’]).sum()
df.groupby([‘产地’,‘类别’]).count() 对所有字段,以产地,类别分组,再做计数
1.哪个地方的成交量最多
df.groupby(‘位置’).sum().sort_values(‘成交量’,ascending=False)
#2.哪个卖家成交量最多
df.groupby(‘卖家’).sum().sort_values(‘成交量’,ascending=False).head()
#3.哪个宝贝成交量最多
df.groupby(‘宝贝’).sum().sort_values(‘成交量’,ascending=False).head()
#4.哪个商家的成交额最多
df[‘成交额’]=df[‘价格’]*df[‘成交量’]
df.head()
df[[‘卖家’,‘成交额’]].groupby(‘卖家’).sum().sort_values(‘成交额’,ascending=False).head()
#通过数组进行分组
df.groupby([‘卖家’,‘位置’]).sum().sort_values(‘成交额’,ascending=False).head()
#通过字典或者序列进行分组
import numpy as np
people=DataFrame(np.random.randn(5,5),columns=[‘a’,‘b’,‘c’,‘d’,‘e’],index=[‘joe’,‘steve’,‘wes’,‘jim’,‘travis’])
people.loc[[‘wes’],[‘b’,‘c’]]=np.nan
people
mapping={‘a’:‘red’,‘b’:‘red’,‘c’:‘blue’,‘d’:‘blue’,‘e’:‘red’}#通过字典进行映射
people.groupby(mapping,axis=1).sum()
def peak_to_peak(arr):
return arr.max()-arr.min()#最大值减去最小值
df.groupby([‘key1’]).agg([peak_to_peak]) # 使用定义函数要用agg
df1[‘数量去均值’]=df1[‘数量’]-df1[‘平均数量’]
来源:CSDN
作者:周顺佳
链接:https://blog.csdn.net/weixin_45480144/article/details/104349410