目录
pandas cookbook
rename()
给df的列重命名,字典的键值对的形式
df.rename(columns={
"原名":"新名",
"原名":"新名",
"原名":"新名"
......
}
inplace=true
)
.sort_values(ascending)
ascend=True,默认,ascend=False
和r里面的arrange一样的功能
排序函数,可以安照升序和降序进行排序,还可以同时指定两个
homelessness_reg_fam = homelessness.sort_values(["region", "family_members"], ascending=[True, False])
日期处理
to_datetime[format=]
subset
提取子集
- 提取一个子集的时候使用一个["列名"]
- 提取多个子集的时候使用两个括号[["列名1","列2..,"列名n"]]
原理也很简单就是外部先生成一个list,完事提取子list - 可以只用逻辑运算筛选特定的子集 ,此时返回true or false,那么就可以进一步提取
例如df["height"]>168,那么提取大于168的就可以使用df[df["height"]>168]
常见的有>,<,==,and,&...
.isin()
类似于r里面的%in% ,判断是否存在,可以进行过滤
运算符的使用
可以直接进行两列+-*/。。
df.[""]+df.[""]
agg()
可以直接基于列计算统计量
除了一般的列之外,时间序列也是同样适用的
The .agg() method allows you to apply your own custom functions to a DataFrame, as well as apply functions to more than one column of a DataFrame at once, making your aggregations super efficient.可以使用agg自定义函数
agg里面可以同时计算几个统计量,不是限定一个
- Cumulative statistics累计统计
- .cumsum()
- .cummax()
counting
drop_duplicates()
去除重复的行
参数
- subset: 列名,可选,默认为None,subset=["",""...""]
- keep: {‘first’, ‘last’, False}, 默认值 ‘first’
- first: 保留第一次出现的重复行,删除后面的重复行。
- last: 删除重复项,除了最后一次出现。
- False: 删除所有重复项。
-inplace:布尔值,默认为False,是否直接在原数据上删除重复项或删除重复项后返回副本。(inplace=True表示直接在原来的DataFrame上删除重复项,而默认值False表示生成一个副本。
.value_counts().
查看有多少的不同值,并计算每个值中多多有重复值的数量
group
Grouped summary statistics
sales_by_type = sales.groupby("type")["weekly_sales"].sum()
分组之后可以选取特定特征进行统计运算
可以使用多个变量进行分组,可以统计指定特征的统计值
sales_by_type_is_holiday = sales.groupby(["type", "is_holiday"])["weekly_sales"].sum()
额原来的汇总的是这么来的
unemp_fuel_stats = sales.groupby("type")[["unemployment", "fuel_price_usd_per_l"]].agg([np.min, np.max, np.mean, np.median])
<script.py> output:
unemployment fuel_price_usd_per_l
amin amax mean median amin amax mean median
type
A 3.879 8.992 7.973 8.067 0.664 1.107 0.745 0.735
B 7.170 9.765 9.279 9.199 0.760 1.108 0.806 0.803
pivot_table()
数据透视表
print(sales.pivot_table(values="weekly_sales", index="department", columns="type", aggfunc=aggfunc=[np.sum,np.mean],fill_value=0, margins=True))
- Values可以对需要的计算数据进行筛选
- aggfunc参数可以设置我们对数据聚合时进行的函数操作
- fill_value填充空值,margins=True进行汇总
可以生成一个数据透视表
set_index()
- 函数原型:DataFrame.set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)
- keys:列标签或列标签/数组列表,需要设置为索引的列
- drop:默认为True,删除用作新索引的列
- append:默认为False,是否将列附加到现有索引
- inplace:默认为False,适当修改DataFrame(不要创建新对象)
- verify_integrity:默认为false,检查新索引的副本。否则,请将检查推迟到必要时进行。将其设置为false将提高该方法的性能。
设置多个索引
# Index temperatures by country & city
temperatures_ind = temperatures.set_index(["country", "city"])
# List of tuples: Brazil, Rio De Janeiro & Pakistan, Lahore
rows_to_keep = [("Brazil", "Rio De Janeiro"), ("Pakistan", "Lahore")]
# Subset for rows to keep
print(temperatures_ind.loc[rows_to_keep])
<script.py> output:
date avg_temp_c
country city
Brazil Rio De Janeiro 2000-01-01 25.974
Rio De Janeiro 2000-02-01 26.699
Rio De Janeiro 2000-03-01 26.270
Rio De Janeiro 2000-04-01 25.750
Rio De Janeiro 2000-05-01 24.356
... ... ...
Pakistan Lahore 2013-05-01 33.457
Lahore 2013-06-01 34.456
Lahore 2013-07-01 33.279
Lahore 2013-08-01 31.511
Lahore 2013-09-01 NaN
[330 rows x 2 columns]
sort_index()
默认根据行标签对所有行排序,或根据列标签对所有列排序,或根据指定某列或某几列对行排序。
注意:sort_index()可以完成和df. sort_values()完全相同的功能,但python更推荐用只用df. sort_index()对“根据行标签”和“根据列标签”排序,其他排序方式用df.sort_values()
ret_index()
还原索引