熱線電話:13121318867

登錄
首頁大數據時代pandas模塊,我覺得掌握這些就夠用了!
pandas模塊,我覺得掌握這些就夠用了!
2020-07-20
收藏

pandas  是為了解決數據分析任務而創建的Python 庫,源于NumPy ,經常被用于對數據挖掘前期數據的處理工作。pandas提供了大量的處理數據的函數和方法,并且還納入了大量庫與很多標準的數據模型,能讓我們更加高效地處理大型數據集。但是大家在使用pandas的過程中,經常會遇到這樣那樣的問題,下面,小編就整理了一些大家需要掌握的pandas 的基礎知識,希望對大家有所幫助。

以下文章來源于: 數據分析1480

作者:劉順祥

背景介紹        

經常會有一些朋友問我類似的問題,“哎呀,這個數據該怎么處理啊,我希望結果是這樣的,麻煩劉老師幫我看看?!?、“劉老師,怎么把一列數據拆分出來,并取出最后一個拆分結果呀?”、“劉老師,怎么將Json數據讀入到Python中呢?”。在我看來,這些問題都可以借助于Pandas模塊完成,因為Pandas屬于專門做數據預處理的數據科學包。下面來介紹一下我認為Pandas模塊中需要掌握的功能和函數。

        數據讀寫        

          案例演示          

# 讀入MySQL數據庫數據
# 導入第三方模塊
import pymysql

# 連接MySQL數據庫
conn = pymysql.connect(host='localhost', user='root', password='test', 
                       database='test', port=3306, charset='utf8')
# 讀取數據
user = pd.read_sql('select * from topy', conn)
# 關閉連接
conn.close()
# 數據輸出
User

        數據初印象        

          案例演示          

# 數據讀取
sec_cars = pd.read_table(r'C:\Users\Administrator\Desktop\sec_cars.csv', sep = ',')
# 預覽數據的前五行
sec_cars.head()

# 查看數據的行列數
print('數據集的行列數:\n',sec_cars.shape)

# 查看數據集每個變量的數據類型
print('各變量的數據類型:\n',sec_cars.dtypes)

# 數據的描述性統計
sec_cars.describe()

        數據清洗        

          案例演示          

# 數據讀入
df = pd.read_excel(r'C:\Users\Administrator\Desktop\data_test05.xlsx')
# 缺失觀測的檢測
print('數據集中是否存在缺失值:\n',any(df.isnull()))

# 刪除法之記錄刪除
df.dropna()
# 刪除法之變量刪除
df.drop('age', axis = 1)

# 替換法之前向替換
df.fillna(method = 'ffill')
# 替換法之后向替換
df.fillna(method = 'bfill')

# 替換法之常數替換
df.fillna(value = 0)
# 替換法之統計值替換
df.fillna(value = {'gender':df.gender.mode()[0], 'age':df.age.mean(),     
                   'income':df.income.median()})

    類型轉換與元素及運算    

          案例演示          

# 數據讀入
df = pd.read_excel(r'C:\Users\Administrator\Desktop\data_test03.xlsx')

# 將birthday變量轉換為日期型
df.birthday = pd.to_datetime(df.birthday, format = '%Y/%m/%d')

# 將手機號轉換為字符串
df.tel = df.tel.astype('str')

# 新增年齡和工齡兩列
df['age'] = pd.datetime.today().year - df.birthday.dt.year
df['workage'] = pd.datetime.today().year - df.start_work.dt.year

# 將手機號中間四位隱藏起來
df.tel = df.tel.apply(func = lambda x : x.replace(x[3:7], '****'))
# 取出郵箱的域名
df['email_domain'] = df.email.apply(func = lambda x : x.split('@')[1])

# 取出人員的專業信息
df['profession'] = df.other.str.findall('專業:(.*?),')
# 去除birthday、start_work和other變量
df.drop(['birthday','start_work','other'], axis = 1, inplace = True)

數據合并、連接與匯總

          案例演示          

# 構造數據集df1和df2
df1 = pd.DataFrame({'name':['張三','李四','王二'], 'age':[21,25,22], 
                  'gender':['男','女','男']})
df2 = pd.DataFrame({'name':['丁一','趙五'], 'age':[23,22], 'gender':['女','女']})
# 數據集的縱向合并
pd.concat([df1,df2] , keys = ['df1','df2'])

# 如果df2數據集中的“姓名變量為Name”
df2 = pd.DataFrame({'Name':['丁一','趙五'], 'age':[23,22], 'gender':['女','女']})
# 數據集的縱向合并
pd.concat([df1,df2])

# 構造數據集
df3 = pd.DataFrame({'id':[1,2,3,4,5],'name':['張三','李四','王二','丁一','趙五'],
                  'age':[27,24,25,23,25],'gender':['男','男','男','女','女']})
df4 = pd.DataFrame({'Id':[1,2,2,4,4,4,5], 'score':[83,81,87,75,86,74,88]
                  'kemu':['科目1','科目1','科目2','科目1','科目2','科目3','科目1']})
df5 = pd.DataFrame({'id':[1,3,5],'name':['張三','王二','趙五'],
                  'income':[13500,18000,15000]})
# 三表的數據連接
# 首先df3和df4連接
merge1 = pd.merge(left = df3, right = df4, how = 'left', left_on='id', right_on='Id')
merge1
# 再將連接結果與df5連接
merge2 = pd.merge(left = merge1, right = df5, how = 'left')
merge2

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢