工作中可以用到的pandas小窍门,积累积累

pandas小窍门,积累积累

  • 查询cc列取值为xx的记录
  • 查询cc列取值包含xx字符串的记录
  • 挑选某些数据类型的列的记录
  • 查看值分布
  • 缺失率
  • 内存修剪
  • 尽量使用向量化
  • 透视表

查询cc列取值为xx的记录

df[df["cc"] == xx]

df.query("cc = xx")


查询cc列取值包含xx字符串的记录

df[df[cc].str.contains(xx)]

挑选某些数据类型的列的记录

df.dtypes.value_counts()
df.select_dtypes(include = ['float64','int64'])

查看值分布

	df[xx].value_counts()

缺失率

df["cc"].isna().mean()

#同理非空率
df["cc"].notna().mean()

	def missing_cal(df):
	    """
	    df :dataframe
	    return:每个变量的缺失率
	    """
	    missing_series = df.isnull().sum()/df.shape[0]
	    missing_df = pd.DataFrame(missing_series).reset_index()
	    missing_df = missing_df.rename(columns={'index':'col',
	                                            0:'missing_pct'})
	    missing_df = missing_df.sort_values('missing_pct',ascending=False).reset_index(drop=True)
	    return missing_df

内存修剪

def reduce_mem_usage(df):
    starttime = time.time()
    numerics = ["int16", "int32", "int64", "float16", "float32", "float64"]
    start_mem = df.memory_usage().sum() / 1024**2
    for col in df.columns:
        col_type = df[col].dtypes
        if col_type in numerics:
            c_min = df[col].min()
            c_max = df[col].max()
            if pd.isnull(c_min) or pd.isnull(c_max):
                continue
            if str(col_type)[:3] == "int":
                if c_min > np.iinfo(np.int8).min and c_max  np.iinfo(np.int16).min and c_max  np.iinfo(np.int32).min and c_max  np.iinfo(np.int64).min and c_max  np.finfo(np.float16).min and c_max  np.finfo(np.float32).min and c_max >> ii16 = np.iinfo(np.int16)
>>> ii16.min
-32768
>>> ii16.max
32767
>>> ii32 = np.iinfo(np.int32)
>>> ii32.min
-2147483648
>>> ii32.max
2147483647

尽量使用向量化

如果确定需要使用循环,则应始终选择apply方法。

否则,矢量化始终是可取的,因为它要快得多。

numpy 矢量化就是df.values()之间进行计算

在这里插入图片描述

在这里插入图片描述

透视表

透视表

df = pd.DataFrame({'姓名':['张 三','李 四','王 五'],
                   '所在地':['北京-东城区','上海-黄浦区','广州-白云区']})
df
df.姓名.str.split(' ', expand=True)

Out[8]: 
   0  1
0  张  三
1  李  四
2  王  五

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/10a12299e3.html