zoukankan      html  css  js  c++  java
  • Pandas常用函数入门

    一.Pandas

    Python Data Analysis Library或Pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。Pandas纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

    二.Series

    Series是一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近,其区别是List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型。

    1.创建

    # 通过list创建Series
    s1 = pd.Series([7, 3, 6, 2, 9, 5, 8])
    # 通过dict创建Series
    s2 = pd.Series({"a":1, "b":2, "c":3})
    # 通过list创建Series,并指定index
    s3 = pd.Series([5, 2, 7, 4],["a", "b", "c", "b"])

    2.选取

    # 获取前3个数据
    s1.head(3) 
    # 获取后3个数据
    s1.tail(3)
    # 获取index为2的数据
    s1[2]
    # 获取1<=index<4的数据
    s1[1:4]
    # 获取index>3的数据
    s1[s1.index>3]
    # 获取数据值>5的数据
    s1[s1>5]

    3.增加、删除、修改

    # 增加数据index=8
    s1[8] = -1
    # 删除数据index=3,不修改原Series
    s1 = s1.drop(3)
    # 对1<=index<3的数据赋值30
    s1[1:3] = 30
    # 对index为4,6的数据赋值50
    s1[4, 6] = 50

    三.DataFrame

    DataFrame是二维的表格型数据结构。可以将DataFrame理解为Series的容器。

    1.创建

    # 通过dict创建DataFrame
    data = {'name':["google", "amazon", "apple", "youtube", "oracle"], 'age':[33, 44, 11, 66, 44], "money" : [400, 200, 100, 800, 500]}
    df1 = pd.DataFrame(data, columns = ["name", "age", "money"])

    2.时间序列类型index

    # 月
    dates = pd.date_range('2017-10-08', periods = 10, freq = "M")
    # 天
    dates = pd.date_range('2017-10-08', periods = 10, freq = "D")
    # 时
    dates = pd.date_range('2017-10-08', periods = 10, freq = "H")

    3.选取

    # 获取前3行数据
    df1.head(3)
    # 获取后3行数据
    df1.tail(3)
    # 获取列
    df1.name, df1['name'], df1[["name", "money"]]
    # 获取行
    df1[0:3], df1.loc[0:3]
    # 同时获取行列
    df1.loc[0:3, ["name", "money"]]

    4.增加、删除、修改

    # 增加列
    df1["new"] = 6
    # 删除列,不修改原DataFrame
    df1 = df1.drop("new", axis = 1)
    # 增加行,修改原DataFrame
    df1.loc[df1.index.max() + 1] = {"name": "microsoft", "age": 70, "money": 300}
    # 增加行,不修改原DataFrame
    df1 = df1.append([{"name": "facebook", "age": 701, "money": 900}], ignore_index = True)
    # 删除行,不修改原DataFrame
    df1 = df1.drop([2])
    # 修改数据
    df1.loc[5,"age"] = 888
    df1.loc[8:10, ["age", "money"]] = [11, 222]

    5.WHERE

    # 过滤数据,使用DataFrame.dtypes查看数据类型
    df1[df1["age"] > 30]
    df1[(df1["age"] > 30) & (df1["money"] < 600)], df1[(df1.age > 40) & (df1.money < 600)]
    df1[df1["name"].isin(["amazon", "youtube"])]

    6.DISTINCT

    # 去重
    df1.age.drop_duplicates()
    df1[["age", "money"]].drop_duplicates()

    7.JOIN

    # 联接
    df3 = pd.merge(df1, df2, how="left", left_on = "name", right_on = "name")
    df3 = pd.merge(df1, df2, how="right", left_on = "name", right_on = "name")

    8.GROUP BY

    # 分组
    df1.groupby("age")["money"].sum()
    df1.groupby(["age", "name"])["money"].count()

    9.ORDER BY

    # 排序
    df1.sort_values("age", ascending=True)
    df1.sort_values(["age", "money"], ascending=[True, False])

    10.UNION

    # 合并
    df2 = df1.copy(True)
    df3 = pd.concat([df1,df2], ignore_index = True)
    df3 = df1.append(df2, ignore_index = True)

    11.导入和保存

    Excel格式需要安装openpyxl、xlrd包

    # 保存为csv格式
    df1.to_csv("data.csv", encoding="utf-8")
    # 从csv文件读取
    df1 = pd.read_csv("data.csv")
    # 保存为excel格式
    df1.to_excel("data.xlsx", sheet_name = "Sheet1", encoding="utf-8")
    # 从excel文件读取
    df1 = pd.read_excel("data.xlsx", sheet_name = "Sheet1")

    作者:faramita2016
    出处:http://www.cnblogs.com/faramita2016/
    本文采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
  • 相关阅读:
    B1005 继续(3n+1)猜想 (25分)
    B1091 N-自守数 (15分)
    B1086 就不告诉你 (15分)
    B1081 检查密码 (15分)
    个人博客作业Week1
    2015个人项目(修改除法要求)
    2014个人博客列表
    最佳个人博客、团队博客评分
    最终评审时间确定
    最终复审要求
  • 原文地址:https://www.cnblogs.com/faramita2016/p/7804832.html
Copyright © 2011-2022 走看看