美文网首页
Pandas杂杂的笔记

Pandas杂杂的笔记

作者: 辰雨蒋_python | 来源:发表于2020-04-17 15:34 被阅读0次

0. Background

在Pandas学习过程中的一些使用的案例和想法
等杂杂笔记堆放太满了,再重新整理吧。现在就简单堆叠一下,上面放感觉新鲜的,末尾放基础的。

下面链接是比较值得过一下的资料:
pandas官方文档
实验楼的Pandas百题大冲关 非常适合pandas学差不多了,过一遍巩固。

1. 这部分放依然有新鲜感的

  • Vlookup 用merge on left实现
    merge中需要注意的一些参数:连接方式how,键值left_on, right_on, 使用索引链接left_index,
    用suffixes可以用来区分数据来源或增加备注(也可直接“ ”)
pd.merge(left = , right =, left_index=Ture,right_index=True, suffixes("","_right"))
  • df.map用于做简单的多值数据替换
    是将函数和数组作为参数,将函数应用于数组中的每一项。不用编写循环且耗时更少。
  dic = {"旧值1":"新值1", "旧值2":"新值1"}
  df["col_new"] = df["col_old"].map(dic)
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Candy', 'Dany', 'Ella',
                            'Frank', 'Grace', 'Jenny'],
                   'grades': [58, 83, 79, 65, 93, 45, 61, 88]})
def choice(x):
    if x > 60:
        return 1
    else:
        return 0
df.grades = pd.Series(map(lambda x: choice(x), df.grades))
  • df.apply() 用于创造新列,输入计算需要已有其他列的情况
def rule(x,y):
  if x == "high" and y > 10:
    return 1
  else:
    return 0
df["new"] = df.apply(lambda x: rule(x["C1"],x["C2"]), axis=1)
  • 用df_filter专门列出筛选条件
  df_filter= df["ID"].isin([.......])
  df[df_filter]
  • %store 在不同JupyterNotebook间传递变量
    在一个notebook上 %store k
    另一个notebook上 %store -r k 即可调用_

  • 对比两个列表元素是否相同

A.intersection(B)
A.difference(B)
# 建议可以用set(A).intersection(set(B))先去重
  • DataFrame 中每个元素减去每一行的平均值
df = pd.DataFrame(np.random.random(size=(5, 3)))
df.sub(df.mean(axis=1), axis=0)    (算点收益率什么的应该会比较方便把)
  • 时间序列
1. 建立时间序列索引
dti = pd.date_range(start='2018-01-01', end='2018-12-31', freq='D')
data = np.random.rand(len(dti))
s = pd.Series(data, index=dti)
s
2018-01-01    0.991481
2018-01-02    0.988274
                ...
2018-12-30    0.307693
2018-12-31    0.768305
2. 统计s中的每个月的mean
s.resample('M').mean()
2. 时间转换
s = pd.date_range('today', periods=100, freq='S')
ts = pd.Series(data, index=s)
ts.resample('Min').sum() # 秒转分钟
  • Max-Min 归一化

    有时候,DataFrame 中不同列之间的数据差距太大,需要对其进行归一化处理.其中,Max-Min 归一化是简单而常见的一种方式,公式如下: image.png
def normalization(df):
    numerator = df.sub(df.min())
    denominator = (df.max()).sub(df.min())
    Y = numerator.div(denominator)
    return Y
df = pd.DataFrame(np.random.random(size=(5, 3)))
-----------------------------------------------------------------------
          0         1         2   #原数据
0  0.068466  0.942762  0.795099
1  0.831463  0.028050  0.603929
2  0.136350  0.826835  0.865010
3  0.595750  0.247326  0.328010
4  0.425220  0.209596  0.154659
------------------------------------------------------------------
normalization(df)
          0         1         2   #normalization后
0   0.000000    1.000000    0.901582
1   1.000000    0.000000    0.632463
2   0.088971    0.873265    1.000000
3   0.691070    0.239722    0.244036
4   0.467569    0.198474    0.000000

2. 这部分放已经看厌倦了但是先留着偶尔瞄一下防止失忆的

  • DataFrame用.copy()进行赋值
    df2=df1只是建立了指针,df2会随df1变化而变化
    用df2 = df1.copy() 此处默认deep=True哦
  • 类比if 函数 (复习列表生成器)
    df[“sign”] = ["+" if x > 0 else "-" for x in df["return"]]
    sales = pd.merge)sales, states, how = "left", on=“City”
  • df["col_name"].unique()
  • df.loc( )对比df.at( )
  • 最大显示行列设置
    pd.set_option("display.max_rows",100)
    pd.set_option("display.max_columns",None) # 全部显示
  • 旧数据列整理好了,更换成新列
df = df.drop("old_col", axis=1)
df = df.join( df["new_col"] )

3. 这部分随便堆点东西

  • 缺失值操作
    df.fillna(value = )
    df.dropna(how="any")

  • 文件读写
    df.to_csv("---.csv") .to_excel(" .xlsx", sheet_name = " ")
    df = pd.read_csv(path) .read_excel(path, "Sheet1", index_col = None, na_values = ["NA"])

  • df.sort_values(by = " ")
    进阶多条件排序:df.sort_values([col1,col2],ascending=[True,False])

  • Series计算是按照索引计算的,索引不同的填充为NaN
    s1.add(2) 模式.sub() .mul() .div()
    s1.median()模式 .sum() .max() .min()

  • df.mean() 会每个col求一个数出来
    可以用df["col"].sum()针对单独列求和

  • 按关键字查询 df3[df3['animal'].isin(['cat', 'dog'])]

  • sales.pivot_talbe(index = "City", values = "Sales", aggfunc = "sum")

  • df.set_index("col_name")
    df.reset_index() 把index扔回到col里面去

相关文章

  • Pandas杂杂的笔记

    0. Background 在Pandas学习过程中的一些使用的案例和想法等杂杂笔记堆放太满了,再重新整理吧。现在...

  • 杂杂杂

    梦见在桥上,是我老家的桥。那个桥没了,有个老太婆在对面。 一开始是我的自行车坏了,找了好几家修理店都说不能修,后面...

  • 杂杂杂

    偏爱雨天的颓废劲儿,情绪随着雨声砸在窗外,心中充满杂念,却又觉得空荡荡,晰沥又模糊。或许我是具有抑郁天分的,...

  • 杂杂杂

    从单身至结婚,人总会发生变化,幸福不幸福只是一瞬间的事情。 一个女人在家庭中的地位,尊严。可以影响着整个家庭的幸福...

  • 杂,杂,杂

    周一上午,单位组织活动,我们小组因为迟到了一分钟,被拒之门外,取消了入场资格,我深深地感到时间他妈的真的...

  • 杂杂杂

    发文 终于可以发文了,几天也没有动手在手机或者电脑面前打过字,这几天看了两本书一些真实又温暖的人生故事和一位即将...

  • 杂杂杂

    今天出图书馆看到有人拿着摄影机,可能是学长学姐们想拍些照片留作纪念吧! 还记得当时来学校的那个傻样,逃离高中苦...

  • 杂杂杂

    就现在来说,倾其所有的能力也只是蚍蜉撼树 很讨厌长大,特别到了20岁左右的年纪,个个事件的意义开始有了在潜...

  • 杂杂杂

    很多东西并不是真正的热爱 既没有一见钟情般的惊艳,也不会像日久生情那般沉湎 只是成为一种习惯,却说深入骨髓,不会结...

  • 杂杂杂

    这一路走了这么远,终于明白了相伴一路终究离散,如果过分追求靠近总会知道些许的失落和反差。明白了许多,厌恶了许多,但...

网友评论

      本文标题:Pandas杂杂的笔记

      本文链接:https://www.haomeiwen.com/subject/hcaevhtx.html