0
点赞
收藏
分享

微信扫一扫

DataFrame 的使用方法

晒大太阳了 2022-03-30 阅读 151
python

 pandas的DateFrame中使用isin()获取列中相对应的值,也可使用~取反获取相反的对应值

df = df[~df["col_name"].isin(target_list)]

根据相同的列名合并两个dataframe,如使用id值合并df1和df2,可使用pd.merge(df1, df2, on="id")

合并,删除列值为空的行数据等
df1 = pd.DataFrame(np.array([['a', 5, 9], ['b', 4, 61], ['c', 24, 9]]),
columns=['name', 'attr11', 'attr12'])
df2 = pd.DataFrame(np.array([['a', 5, 19], ['b', 14, 16], ['c', 4, 9]]),
columns=['name', 'attr21', 'attr22'])
df3 = pd.DataFrame(np.array([['a', 15, None], ['b', 4, 36], ['c', 14, 9]]),
columns=['name', 'attr31', 'attr32'])
m = pd.merge(pd.merge(df1, df2, on='name'), df3, on='name')
print(m)
# 删除列值为空的行
m = m.dropna(subset=["attr32"])
print(m)
m["attr32"] = m["attr32"].apply(lambda x: 1000 if x is None else x)
print(m)

线箱图的异常值计算

用箱形图寻找异常值_wo的博客-CSDN博客_箱线图异常值

图中箱中线是中位数(50%),上边为75%值Q3,下边为25%值Q1

QR代表四分位距,等于Q3 - Q1,上边界异常值为Q3 +1.5 * QR,下边界异常值Q1 - 1.5 * QR

Pandas的DataFrame按照某列值排序,可使用sort_values(by="col_name", inplace=False, ascending=True)

使用 drop() 删除列或行,参数如下:

        labels:要删除的行或列,用列表给出
        axis:默认为0,指要删除的是行,删除列时需指定axis为1
        index :直接指定要删除的行,删除多行可以使用列表作为参数
        columns:直接指定要删除的列,删除多列可以使用列表作为参数
        inplace: 默认为False,该删除操作不改变原数据;inplace = True时,改变原数据

如果使用index删除行,则相同的index只能删除一次,后加的数据是累加的;

如 pd.DataFrame().drop(index=0, inplace=True, axis=0),则index为0的元素就删除了,再使用pd.DataFrame().append(df),其index会顺序往下,不会再为0了。

按条件删除pandas.DataFrame某列

1.删除df.ts_code大于等于"500000"且小于"600000"的所有行
     df = df.drop(df[(df.ts_code >= "500000") & (df.ts_code < "600000")].index)

2.删除exchange_id列 df = df.drop('exchange_id', axis=1)

Sample抽样的使用方法

数据不均衡时,需要对样本做抽样,可使用 panda DataFrame 中的 sample() 函数。

pd.DataFrame().sample(self: FrameOrSeries,

n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)

n:要抽取的行数

frac:当我们需要抽取数据的百分比时,我们需要用到这个参数;注:与 n 参数不可同时使用。

replace: 是否允许重复抽样,默认情况下为False

weights:代表的是每个样本的权重。

random_state: 随机种子,给定一个具体的数字,保证每次抽样的数据都是相同的。

axis: 选择抽取数据的是行还是列,axis=0时抽取的是行,axis=1的时候抽取的是列。

         默认情况下axis=0,即抽取的是行。

举报

相关推荐

0 条评论