Python - pandas总结


1. pandas 的数据类型

1.1 Series

Series 是“带标签的数组”。

  • 创建
# 1.直接创建
s = pd.Series(np.arange(10), index=list("ABCDEFGHIJ"))
# 2.通过字典创建
s = pd.Series(dict_)
  • 切片和索引
# 切片
s[2:10:2]
# 索引
s[1]		# 选取单个元素
s[[2,3,6]] 	# 选取某几个元素
s[s > 4] 	# bool索引
s[["A", "F"]] # 

1.2 DataFrame

二维,Series的容器。

  • 基础属性
    • df.shape
    • df.dtypes
    • df.ndim 维度
    • df.index
    • df.columns
    • df.values
  • 整体情况
    • df.head()
    • df.tail() 末尾几行
    • df.info() 查看数据字段、缺失情况
    • df.describe() 查看数据的统计信息
  • 取行或列,可用于更改数据
    • df.loc() 通过标签
    • df.iloc() 通过索引
    • df[['a']] 返回的是DataFrame
    • df['a'] 返回的是Series

2. 读取外部数据

常用pd.read_csv()


3. 数据合并

  • join()
  • merge()

4. 常用统计方法

  • df.mean()
  • df.max()
  • df.min()
  • df.argmax()
  • df.argmin()

5. 缺失数据的处理

  • 判断是否NaN:pd.isnull(df), pd.notnull(df)
  • 抛弃:df.dropna()
  • 填充:df.fillna()
  • 处理为0的数据:有时需要设置成NaN,令其不参与运算
    • df[df==0] = np.nan

6. 分组和聚合

  • groupby:
    • grouped = df.groupby(by="columns_name"),返回的可迭代对象可以进行遍历、应用聚合方法
    • DataFrameGroupBy对象中的每一个元素是一个元组
      元组里面是*(索引(分组的值),分组之后的DataFrame)*
    • DataFrameGroupBy对象的优化方法
      • count
      • sum
      • mean
      • median
      • std,var
      • min,max
# 对国家和省份进行分组统计
grouped = df.groupby(by=[df["Country"],df["State/Province"]]) 

#获取分组之后的某一部分数据
df.groupby(by=["Country","State/Province"])["Country"].count()

#对某几列数据进行分组
df["Country"].groupby(by=[df["Country"],df["State/Province"]]
).count()

t1 = df[["Country"]].groupby(by=[df["Country"],df["State/Province"]]).count()
t2 = df.groupby(by=["Country","State/Province"])[["Country"]].count()

#以上的两条命令结果一样
#和之前的结果的区别在于当前返回的是一个DataFrame类型

7. 索引和复合索引

index是个可迭代对象。

  • 索引操作:

    • 获取index:df.index
    • 设置index :df.index = ['x','y']
    • 重新设置reindex : df.reindex(list("abcedf")),原有的索引不变,没有的默认数据为NaN
    • 指定某一列作为indexdf.set_index("Country",drop=False),drop默认为True,意味删掉DataFrame中的索引列。
    • 返回index的唯一值:df.set_index("Country").index.unique()
    • a.set_index(["c","d"]) - 设置复合索引

猜你喜欢

转载自blog.csdn.net/weixin_39129504/article/details/86033433