Pandas處理數據基本操作彙總

本文主要介紹pandas的一些基本操作,也是用的比較頻繁是操作。主要分爲以下幾點:

1. pandas查看數據類型等

2. pandas構建一個完整的dataframe

3. pandas取行列的3種方法

4. Pandas實現where filter以及邏輯語句

5. pandas對where條件篩選後只有一行的dataframe取其中某一列的值

6. pandas數據去重

7.pandas之group操作

8.pandas修改列的別名

9.pandas進行全局修改數據,局部修改數據

10.pandas合併df

11.pandas進行數據排序

12.pandas取前k個值

13.pandas自定義行數

具體代碼請到github獲取(歡迎follow, star, fork)https://github.com/WenRichard/Pandas-exploration

部分代碼如下:

import pandas as pd
import numpy as np

df = pd.DataFrame({'total_bill': [16.99, 10.34, 23.68, 23.68, 24.59],
                   'tip': [1.01, 1.66, 3.50, 3.31, 3.61],
                   'sex': ['Female', 'Male', 'Male', 'Male', 'Female']})
df2 = pd.DataFrame({'total_bill': [16.99, 10.34, 23.68, 23.68, 24.59],
                   'tip': [1.01, 1.66, 3.50, 3.31, 3.61],
                   'sex': ['Female', 'Male', 'Male', 'Male', 'Female']})
df3 = pd.DataFrame({'total_bill': [16, 10, 23, 23, 24],
                   'tip': [1.1, 1.6, 3.5, 3.3, 3.6],
                   'sex': ['Female', 'Male', 'Male', 'Male', 'Female']})
'''查看數據類型等'''
print(df)
print(df.dtypes)
print(df.index)
print(df.columns)


'''構建一個完整的dataframe'''
da = pd.DataFrame([[1,2,3],[1,3,4],[2,4,3]],index = ['one','two','three'],columns = ['A','B','C'])
print(da)
# va可以看成是個列表
va = df.values
print(va)


'''取行列的3種方法'''
# loc,基於列label,可選取特定行(根據行index);
# iloc,基於行/列的position;
# ix,爲loc與iloc的混合體,既支持label也支持position;
print(df.loc[1:3, ['total_bill', 'tip']])  # 1,3是行的label
print(df.iloc[1:3, [1, 2]])  # 1,3是行的position
print(df.ix[1:3, [1, 2]])


'''Pandas實現where filter以及邏輯語句'''
print(df['sex'] == 'Female')  # 返回布爾值
print(df[df['sex'] == 'Female'])
print(df[df['total_bill'] > 20])
# and
print(df[(df['sex'] == 'Female') & (df['total_bill'] > 20)])
# or
print(df[(df['sex'] == 'Female') | (df['total_bill'] > 20)])
# in
print(df[df['total_bill'].isin([21.01, 23.68, 24.59])])
# not
print(df[-(df['sex'] == 'Male')])  # 用個負號表示“非”
print(df[-df['total_bill'].isin([21.01, 23.68, 24.59])])


'''對where條件篩選後只有一行的dataframe取其中某一列的值'''
print(df[df['tip'] == 1.66])
print(df.loc[df['tip'] == 1.66])
total = df.loc[df['tip'] == 1.66, 'total_bill'].values
print(total[0])


'''數據去重'''
# drop_duplicates根據某列對dataframe進行去重
# subset,爲選定的列做distinct,默認爲所有列
# keep,值選項{'first', 'last', False},保留重複元素中的第一個、最後一個,或全部刪除
# inplace ,默認爲False,返回一個新的dataframe;若爲True,則返回去重後的原dataframe
print('-------------')
# print(df.drop_duplicates(subset=['sex'], keep='first', inplace=True))
print('-------------')
print(df)
print('-------------')
print(df.drop_duplicates(subset=['sex'], keep='first'))

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章