pandas小结

pandas part I:

# 总结:

  • DataFrame.loc[0:5] 一共6行数据,而切片[0:5]只有5个数据
  • 在对df的行数据删除后,有些index已缺失,此时用 iloc[]来按照位置索引
  • 取指定行 food_info.loc[[2,5,10]],传入list
  • 取指定列 zinc_copper = food_info[["Zinc_(mg)", "Copper_(mg)"]]
  • 取指定后缀名的列:
  • col_names = food_info.columns.tolist()
  • gram_columns = []
  • for c in col_names:
  •   if c.endswith("(g)"):
  •     gram_columns.append(c)
  • food_info.sort_values("Sodium_(mg)", inplace=True)  #默认升序,可以用 ascending=False来降序

pandas part II:

  • 根据age_is_null = titanic_survival["Age"].isnull(), 返回索引,
  • 根据索引的True,False,来获取null的集合: age_null_true = age[age_is_null]
  • 如果某列中有nan,任何运算结果都是nan
  • 取 good_ages = titanic_survival["Age"][age_is_null == False]
  • correct_mean_age = sum(good_ages) / len(good_ages)
  • 但是缺失数据的表很普遍,于是pandas用correct_mean_age = titanic_survival["Age"].mean()来解决nan问题
  • 按要求选取指定行:pclass_rows = titanic_survival[titanic_survival["Pclass"] == this_class]
  • 对指定行的某列进行运算: pclass_fares_mean = pclass_rows["Fare"].mean()
  • 数据透视表: 默认aggfunc为np.mean
  • passenger_survival = titanic_survival.pivot_table(index="Pclass", values="Survived", aggfunc=np.mean)
  • 多列透视表:values传入一个list
  • port_stats = titanic_survival.pivot_table(index="Embarked", values=["Fare","Survived"], aggfunc=np.sum)
  • 去掉有nan的列: titanic_survival.dropna(axis=1) #age canbin embark
  • 去掉指定列中有nan的行 : titanic_survival.dropna(axis=0,subset=["Age", "Sex"])
  • 取指定index行的某列的一个数据: titanic_survival.loc[83,"Age"]
  • 对所有列数据应用函数:
    def not_null_count(column):
      column_null = pd.isnull(column)
      null = column[column_null]
      return len(null)

    column_null_count = titanic_survival.apply(not_null_count)

pandas part III:

  • 获取Series的值 fandango['FILM'].values
  • 取某一列为另一列的索引:series_custom = Series(fandango['RottenTomatoes'].values , index=fandango['FILM'].values)
  • 用series_name限制条件series_greater_than_50 = series_custom[series_custom > 50]
  • 取到所有列的类型:types = fandango_films.dtypes
  • types[types.values == 'float64'].index 本质上是从types 回到 索引上
  • deviations = fandango_films[float_columns].apply(lambda x: np.std(x)) 对所有float类型数据应用方差
  • groupby将一列中的元素进行分组,idxmax取出对应列group的最大索引位置,score_series=df.groupby("ID")["m_score"].idxmax()
  • df.groupby(df['class1'])['data1'] == df['data1'].groupby(df['class1']) 是一个整体,要取出数据,则.idxmax()等操作
  • df.groupby(df['class1'])['data1']  :   <pandas.core.groupby.SeriesGroupBy object at 0x000001F1CEDF0AC8>

猜你喜欢

转载自www.cnblogs.com/the-wolf-sky/p/10536737.html
今日推荐