Python-Pandas模块
关键字
一、pandas常用方法
pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
import pandas as pd
方法 | 释义 |
---|---|
df.info()/df.shape() | 查看df几行几列 |
df.describe() | 查看df描述性信息 |
df.reset_index(index_col=“0”) | 将series转换成dataframe |
df.reset_index(inplace=True) | 重置索引 |
df.reset_index(drop=True) | 给df重新定义连续的索引 |
df.groupby(“year”)[“cusno”].mean() | 取cusno列每年的平均值 |
df.groupby(“year”)[“cusno”,“orgid”].mean() | 取cusno,orgid两列每年的平均值,多维分析 |
df[“cusno”].min() | 获取cusno列的最小值 |
df[“cusno"].argmin() | 获取cusno列最小值的行索引 |
df.loc[[df[“cusno”].argmin()]] | 获取cusno列最小值的那行数据 |
df.set_index(“cusno”,inplace=True) | 将cusno列变成索引列 |
df.drop(columns=[“cusno”,“orgid”],inplace=True) | 删除cusno,orgid两列 |
df.columns=[“C”,“O”] | 直接修改df中原来两列的列名 |
df.rename(columns={“Cusno”:“C”,“Orgid”:“O”},inplace=True) | 修改原来df的列名 |
df.isnull() | 判断df上有无元素值 |
df.isnull().sum() | 统计df上每列有多少个缺失值 |
df[“cusno”].value_counts() | 检测cusno列上每个值有多少 |
df[“cusno”][df[“cusno”] != " "].median() | 计算cusno这列不为空的数据的中位数 |
df.loc[df[“cusno”] == " ",“cusno”] = df[“cusno”][df[“cusno”] != " "].median() | 给cusno这列为空的值替换为中位数 |
df[“cusno”].astype(float) | 修改数据类型 |
df[“cusno”] = df[“cusno”].map({“Yes”:1,“No”:0}) | 做映射,将Yes变为1,No变为0 |
pd.concat([s1,s2],axis=1) | 将s1和s2横向合并,将两个series变成一个DF |
df[(df[“col”]>=0) & (df[“col”] <= 1)] | col列大于等于0小于等于1的值 |
df[“col3”] = df[“col2”].map(lambda x: 1 if x>=0 else -1) | 如果col2列大于等于0的话,col3为1,否则为-1 |
df[“col”].clap(-1.0,1.0) | 将Col截断,小于-1的变成-1,大于1的变成1,clip函数就是截断 |
df[“col”].nlargest(5) | 输出Col列最大的5个数 |
df[“col”].nsmallest(5) | 输出Col列最小的5个数 |
df.cumsum() | 累计加和的用法 |
df[“col3”].median() | 中位数 |
df[“col3”].quantile() | 中位数 |
df[df[“col”] > 0] | col中大于0的数据 |
df.query(“col > 0”) | col中大于0的数据 |
df.to_dict() | 将df转换成字典 |
df.to_html() | 将df转换成html |
df.iloc[3,1] | 数字索引 |
df.loc[3,‘B’] | 行标签 |
df.dropna() | 移除有空值行 |
df.isnull().sum() | 统计空值的个数 |
df.fillna(0) | 将空值填充为0 |
df[[“D”,“A”,“B”,“C”]] | 将df的列重新排序 |
df.drop([“C”,“D”],axis=1) | 删除CD这两列 |
list(df.columns()) | 将df的列汇总成List |
pd.read_csv(“./a.csv”,index_col=0) | 将a.csv传入到pandas中,将第一列作为索引列 |
[“cusno_” + col.lower() for col in cusno_.coulmns] | 将cusno_的原字段都加上cusno_的前缀,并小写 |
pd.concat([cusno,orgid],axis=1) | 将cusno和orgid两个df横向拼接 |
len(df) | df有多少条记录 |
小案列
将一个CSV文件里的某几个列变成Categorical类型
number_columns = ["Cus_no","Age","Address"]
for column in number_columns:
df[column] = df[column].astype(float)
for column in set(df.columns) - set(number_columns):
df[column] = pd.Categorical(df[column])