1. 显示最大列数
pd.set_option('display.max_columns', 80)
2.显示总行数
df.shape[0]
len(df)
3.查看数据类型
df.dtypes
4.获取unique及其个数
df['A'].unique()
len(df['A'].unique())
5.去掉全為NaN的行
df.dropna(how='all')
6.去掉全為NaN的列
df.dropna(axis=1, how='all')
7.使用前一行的值填充,並限制2行
0 1 2
0 0.476985 3.248944 -1.021228
1 -0.577087 0.124121 0.302614
2 0.523772 NaN 1.343810
3 -0.713544 NaN -2.370232
4 -1.860761 NaN NaN
5 -1.265934 NaN NaN
df.fillna(method='ffill', limit=2)
0 1 2
0 0.476985 3.248944 -1.021228
1 -0.577087 0.124121 0.302614
2 0.523772 0.124121 1.343810
3 -0.713544 0.124121 -2.370232
4 -1.860761 NaN -2.370232
5 -1.265934 NaN -2.370232
8.查看前5行和后5行
df.head().append(df.tail())
9.df.info()
函数可以快速查看是否存在缺失值情况
10.df. loc[*, *]
其中第一个 *
代表行的选择,第二个*
代表列的选择,如果省略第二个位置写作loc[]
,这个 * 是指行的筛选。
11. df.groupby(m)[n].k
其中:
m: 分组依据,但需要按照多个条件分组时,需要把条件放到一个列表中
n: 数据来源,即需要计算的字段,同样的,需要多个字段也是放入一个列表
k: 聚合函数,常用的有min/max/mean/count等,也可以传入自定义参数
12. pivot 与pivot_table
pivot
把一个长表转为宽表, 其中index
必须具有唯一性。
pivot_table
比pivot
多了一个aggfunc
参数,即聚合参数。
pivot
:无法聚合,只能简单重塑(reshape),如果存在重复数据将会报错;常用于处理非数字数据。
pivot_table
:可以聚合,正好弥补 pivot 的缺陷。
13.Merge的4种连接方式
使用merge时,如果没有指定 on = 哪一列,则默认以重叠列名当做链接键, 当然也可以按照多键连接,只需要'on'参数后传入多键列表即可
14.身份证发征地和当前行政区域查询
def get_location(id_number):
# print(id_number)
url = f'https://qq.ip138.com/idsearch/index.asp?userid={id_number}&action=idcard'
headers = {
'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Mobile Safari/537.36'
}
res = requests.get(url,headers = headers)
html = res.text.encode("ISO-8859-1").decode("utf-8")
element = etree.HTML(html)
try:
issue_place = element.xpath("//div[@class='bd']/table/tbody/tr[5]/td[2]/p/text()")[0]
current_place = element.xpath("//div[@class='bd']/table/tbody/tr[6]/td[2]/p/text()")[0]
except Exception as e :
current_place = issue_place
return issue_place,current_place
df[['发证地区','行政区域']] = df.apply(lambda row:pd.Series(get_location(row['身份证号'])),axis=1)
15. 设置category
df["Status"] = df["Status"].astype("category")
df["Status"].cat.set_categories(["won","pending","presented","declined"],inplace=True)
16.获取除去某列的其他所有列
df.loc[:,df.columns != 'column_name' ]
17.查询只出现在left dataframe里的
(left.merge(right, on='key', how='left', indicator=True)
.query('_merge == "left_only"')
.drop('_merge', axis = 1))
18.根据第一个excel修改其他excel文件列表并 append在一起
dfs = []
for i,f in enumerate(files): # files 是excel 文件路径
df = pd.read_excel(f)
if i == 0:
col = df.columns
df.columns=col
dfs.append(df)
df.concat(dfs)
19. 统计每列nan总数
df.isnull().sum()