review_points_mean = reviews.points.mean()
reviews.points.map(lambda p: p - review_points_mean)
def remean_points(row):
row.points = row.points - review_points_mean
return row
reviews.apply(remean_points, axis=‘columns’)
, <, ==,+
两列数据长度和类型相等时可用这些运算符;
每个数
thresh=6,即剔除NA值,这些行剩余的数值数量大于等于6
df.dropna(thresh=6)
df.fillna(value=3)
df.dropna(how=“any”)
df['number']=df['number'].interpolate().astype(int)
np.nan导出到excel中是为空值,如df[df<0]
可过滤所有列含的负值。
列名
和行标签
,如行标签是数字则可用数字来索引,这一点易错误。df.loc[32]
表示索引第33行的数据。df.iat[1,1]=3 #第二行第二列值修改为3
Series.between(left, right, inclusive=True)
对s的前3个数据进行访问:
s[:3]
https://www.jianshu.com/p/c033f89f4750
DataFrame.insert(loc, column, value, allow_duplicates=False)
Insert column into DataFrame at specified location.
DataFrame.append(self, other, ignore_index=False, verify_integrity=False, sort=False)
Append rows of other to the end of caller, returning a new object.
df.append(df.iloc[7]) #第八行输入添加至最后一行
如series纵向拼接:
s4 = s3.append(s1) # 将s1拼接到s3后面
两个dataframe四则运算之后,除了匹配的行列名,其余行列的值都为空。
https://blog.csdn.net/dsfsdfasghyjykytkjgh/article/details/89003299?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
df = pd.DataFrame(np.random.random(size=(5, 10)), columns=list('abcdefghij'))
print(df)
df.sum().idxmin() # idxmax(), idxmin() 为 Series 函数返回最大最小值的索引值
df.sub(df.mean(axis=1),axis=0) #df.mean(axis=1) 按列运算求平均,即每行的均值
df.T
df.sort_values(by=‘age’)
df.sort_values(by=[‘age’,‘score’],ascending=[False,True])
df['name']
df.name
df[['name1','name2']]
df.iloc[1:3] # 索引出第二行,第三行
df.iloc[0:2] #索引出第一行,第二行
df[df['animal'].isin(['cat','dog'])]
df.iat[1,1]=2 # 第二行第二列数据改为2
df.iat[0,0]=3 # 第一行第一列数据改为3
df['gender'].map({'yes':True,'no':False})
Series四则运算都是按照索引
进行运算,如果索引不同则填充为空值NaN
。
s4.add(s3)
s4.sub(s3)
s4.mul(s3) #乘法
s4.div(s3) #除法
https://www.cjavapy.com/article/237/
from functools import reduce
dfs = [df0, df1, df2, dfN]
df_final = reduce(lambda left,right: pd.merge(left,right,on=‘name’), dfs)
piece=[df1,df2,df3]
pd.concat(piece)
groupwise操作
分组求和
df.groupby('column_name').sum()
df = pd.DataFrame({'A': list('aaabbcaabcccbbc'),'B': [12, 345, 3, 1, 45, 14, 4, 52, 54, 23, 235, 21, 57, 3, 87]})
df.groupby('A')['B'].nlargest(n).sum(level=0)
df.unstack(level=0) #按第一级索引展开,level=-1则按最后一列索引展开
pd.pivot_table(df, values=['D'], index=['A', 'B'], aggfunc=[np.sum, len])
# 按D列聚合,以A、B为索引,聚合方式aggfunc指定
若关心 C 列对 D 列的影响,可以加入 columns 值进行分析。
pd.pivot_table(df,values=['D'],index=['A','B'],aggfunc=[np.sum,len],columns=['C'],fill_value=0)
# fill_value处理缺省值
df = pd.DataFrame({"id": [1, 2, 3, 4, 5, 6], "raw_grade": [
'a', 'b', 'b', 'a', 'a', 'e']})
df["grade"] = df["raw_grade"].astype("category")
df["grade"].cat.categories=["sehr gut","gut","Nicht gut"]
df["grade"]=df["grade"].cat.set_categories(["very bad","bad","medium","good","very good"])
df.sort_valuesO(by="grade")
df.groupby("grade").size()
dindex = pd.date_range(start='2020-01-01',end='2020-09-01',freq='D')
s = pd.Series(np.random.rand(len(dindex)),index=dindex)
s[s.index.weekday==0].sum() #周一对应的索引是0
s.resample('M').mean()
s=pd.date_range('today',periods=100,freq='s')
ts=pd.Series(np.random.randint(0,500),len(s),index=s)
ts.resample('Min').sum()
s = pd.date_range('today', periods=1, freq='D') # 获取当前时间
ts = pd.Series(np.random.randn(len(s)), s) # 随机数值
ts_utc = ts.tz_localize('UTC') # 转换为 UTC 时间
s= pd.date_range('today',periods=1,freq='D')
ts_utc.tz_convert('Asia/Shanghai')
https://www.jianshu.com/p/96ea42c58abe
https://www.jianshu.com/p/14af48479078