pandas 是基于NumPy 的一種工具,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。
Pandas 納入了大量庫(kù)和一些標(biāo)準(zhǔn)的數(shù)據(jù)模型,提供了高效地操作大型數(shù)據(jù)集所需的工具。pandas提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法。
Pandas是python的一個(gè)數(shù)據(jù)分析包,最初由AQR Capital Management于2008年4月開(kāi)發(fā),并于2009年底開(kāi)源出來(lái),目前由專注于Python數(shù)據(jù)包開(kāi)發(fā)的PyData開(kāi)發(fā)team繼續(xù)開(kāi)發(fā)和維護(hù),屬于PyData項(xiàng)目的一部分。
Pandas最初被作為金融數(shù)據(jù)分析工具而開(kāi)發(fā)出來(lái),因此,pandas為時(shí)間序列分析提供了很好的支持。?
Pandas的名稱來(lái)自于面板數(shù)據(jù)(panel data)和python數(shù)據(jù)分析(data analysis)。panel data是經(jīng)濟(jì)學(xué)中關(guān)于多維數(shù)據(jù)集的一個(gè)術(shù)語(yǔ),在Pandas中也提供了panel的數(shù)據(jù)類型。
主要數(shù)據(jù)結(jié)構(gòu)為兩個(gè)類:DataFrame和Series
Series:一維數(shù)組,與Numpy中的一維array類似。二者與Python基本的數(shù)據(jù)結(jié)構(gòu)List也很相近。Series如今能保存不同種數(shù)據(jù)類型,字符串、boolean值、數(shù)字等都能保存在Series中。
Time- Series:以時(shí)間為索引的Series。
DataFrame:二維的表格型數(shù)據(jù)結(jié)構(gòu)。很多功能與R中的data.frame類似。可以將DataFrame理解為Series的容器。
Panel :三維的數(shù)組,可以理解為DataFrame的容器。
Panel4D:是像Panel一樣的4維數(shù)據(jù)容器。
PanelND:擁有factory集合,可以創(chuàng)建像Panel4D一樣N維命名容器的模塊。
# -*- coding: utf-8 -*-
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
#作者:cacho_37967865
#博客:https://blog.csdn.net/sinat_37967865
#文件:pandas_model.py
#日期:2019-09-06
#備注:pandas 是基于NumPy 的一種工具,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的,主要數(shù)據(jù)結(jié)構(gòu)為兩個(gè)類:
DataFrame: 可以理解為表格,類似于Excel的表格 pandas.core.frame.DataFrame
Series: 表示單列。DataFrame包含多個(gè)列,即多個(gè)Series,每個(gè)Series都有名稱。pandas.core.series.Series
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''import numpy as np
import pandas as pd# 創(chuàng)建一個(gè)pandas對(duì)象
def pandas_create():df = pd.DataFrame({"id": [1001, 1002, 1003, 1004, 1005, 1006],"date": pd.date_range('20130102', periods=6),"city": ['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '],"age": [23, 44, 54, 32, 34, 32],"category": ['100-A', '100-B', '110-A', '110-C', '210-A', '130-F'],"price": [1200, np.nan, 2133, 5433, np.nan, 4432]},columns=['id', 'date', 'city', 'category', 'age', 'price'])#print(df,'\n')return df# 查看信息
def pandas_show(df):print(type(df))print('查看數(shù)據(jù)表基本信息:',type(df.info),'\n',df.info)print('查看維度元組tuple(行數(shù)、列數(shù)):',df.shape)print('查看每一列數(shù)據(jù)的格式:',type(df.dtypes),'\n',df.dtypes)print('查看某一列值和數(shù)據(jù)類型:','\n',df['price'])print('查看數(shù)據(jù)表的值:',type(df.values),'\n',df.values)print('查看默認(rèn)前5行數(shù)據(jù):','\n',df.head(10))print('查看默認(rèn)后5行數(shù)據(jù):','\n',df.tail())print('查看id列中最大值對(duì)應(yīng)的索引:', '\n', df.id.idxmax(0)) # 只針對(duì)數(shù)值類型#print('顯示所有列最大值所對(duì)應(yīng)的索引:', '\n', df.idxmax(0))print('統(tǒng)計(jì)信息展示:','\n',df.describe())print('統(tǒng)計(jì)每一列有多少缺失值:', '\n', df.isnull().sum())print('統(tǒng)計(jì)每一列非空個(gè)數(shù):', '\n', df.count())print('統(tǒng)計(jì)某列是否有重復(fù)數(shù)據(jù):', '\n', df.age.is_unique) # false有重復(fù)數(shù)據(jù)print('按列的值排序:', '\n', df.sort_values(by='age'))print('按順序進(jìn)行多列降序排序:', '\n', df.sort_values(['age','category'],ascending=False))print('選擇多列數(shù)據(jù):', '\n', df[['id','price']])print('選擇行數(shù)據(jù)通過(guò)切片獲取:', '\n', df[0:3])print('選擇行數(shù)據(jù)通過(guò)一個(gè)單獨(dú)列的值來(lái)篩選:', '\n', df[df.age > 32])print('行和列轉(zhuǎn)置:', '\n', df.T)print('統(tǒng)計(jì)每一列(數(shù)字類型)平均值:', '\n', df.mean())print('統(tǒng)計(jì)每一列(數(shù)字類型)平均值取整:', '\n', round(df.mean()))print('統(tǒng)計(jì)每一行(數(shù)字類型)平均值:', '\n', df.mean(1))# inplace = True時(shí)會(huì)改變舊的DataFrame
def pandas_deal(df):#print('刪除列改變?cè)瓉?lái)數(shù)據(jù):','\n',df.drop('price', axis = 1, inplace = True))print('刪除列不改變?cè)瓉?lái)數(shù)據(jù):','\n',df.drop('price', axis = 1))print('刪除所有均為空值的行:', '\n', df.dropna(how='all'))print('刪除包含缺失值的行:','\n',df.dropna())print('填充所有空值(NaN)用數(shù)字0:','\n',df.fillna(value=0))print('填充某一列空值(NaN)用數(shù)字0:','\n',df.price.fillna(value=0))print('填充某一列空值(NaN)用price均值:','\n',df['price'].fillna(df['price'].mean(),inplace = True))print('修改某個(gè)字段的值替換:','\n',df['city'].replace('SH', 'shanghai',inplace = True))print('修改某個(gè)字段的值大小寫轉(zhuǎn)換','\n',df['city'].str.lower())print('修改某一列的數(shù)據(jù)格式:','\n',df['age'].astype(float))print('表格值:','\n',df)
?
總結(jié)
以上是生活随笔為你收集整理的【Python】pandas模块操作大型数据集的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。