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("http://div[@class='bd']/table/tbody/tr[5]/td[2]/p/text()")[0]
current_place = element.xpath("http://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()