【Python】pandas模塊操作大型數據集

pandas 是基於NumPy 的一種工具,該工具是爲了解決數據分析任務而創建的。
Pandas 納入了大量庫和一些標準的數據模型,提供了高效地操作大型數據集所需的工具。pandas提供了大量能使我們快速便捷地處理數據的函數和方法。
Pandas是python的一個數據分析包,最初由AQR Capital Management於2008年4月開發,並於2009年底開源出來,目前由專注於Python數據包開發的PyData開發team繼續開發和維護,屬於PyData項目的一部分。
Pandas最初被作爲金融數據分析工具而開發出來,因此,pandas爲時間序列分析提供了很好的支持。 
Pandas的名稱來自於面板數據(panel data)和python數據分析(data analysis)。panel data是經濟學中關於多維數據集的一個術語,在Pandas中也提供了panel的數據類型。

主要數據結構爲兩個類:DataFrame和Series
Series:一維數組,與Numpy中的一維array類似。二者與Python基本的數據結構List也很相近。Series如今能保存不同種數據類型,字符串、boolean值、數字等都能保存在Series中。
Time- Series:以時間爲索引的Series。
DataFrame:二維的表格型數據結構。很多功能與R中的data.frame類似。可以將DataFrame理解爲Series的容器。
Panel :三維的數組,可以理解爲DataFrame的容器。
Panel4D:是像Panel一樣的4維數據容器。
PanelND:擁有factory集合,可以創建像Panel4D一樣N維命名容器的模塊。

# -*- coding: utf-8 -*-
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
#作者:cacho_37967865
#博客:https://blog.csdn.net/sinat_37967865
#文件:pandas_model.py
#日期:2019-09-06
#備註:pandas 是基於NumPy 的一種工具,該工具是爲了解決數據分析任務而創建的,主要數據結構爲兩個類:
DataFrame: 可以理解爲表格,類似於Excel的表格 pandas.core.frame.DataFrame
Series: 表示單列。DataFrame包含多個列,即多個Series,每個Series都有名稱。pandas.core.series.Series
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

import numpy as np
import pandas as pd


# 創建一個pandas對象
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('查看數據表基本信息:',type(df.info),'\n',df.info)
    print('查看維度元組tuple(行數、列數):',df.shape)
    print('查看每一列數據的格式:',type(df.dtypes),'\n',df.dtypes)
    print('查看某一列值和數據類型:','\n',df['price'])
    print('查看數據表的值:',type(df.values),'\n',df.values)
    print('查看默認前5行數據:','\n',df.head(10))
    print('查看默認後5行數據:','\n',df.tail())
    print('查看id列中最大值對應的索引:', '\n', df.id.idxmax(0))       # 只針對數值類型
    #print('顯示所有列最大值所對應的索引:', '\n', df.idxmax(0))

    print('統計信息展示:','\n',df.describe())
    print('統計每一列有多少缺失值:', '\n', df.isnull().sum())
    print('統計每一列非空個數:', '\n', df.count())
    print('統計某列是否有重複數據:', '\n', df.age.is_unique)          # false有重複數據

    print('按列的值排序:', '\n', df.sort_values(by='age'))
    print('按順序進行多列降序排序:', '\n', df.sort_values(['age','category'],ascending=False))

    print('選擇多列數據:', '\n', df[['id','price']])
    print('選擇行數據通過切片獲取:', '\n', df[0:3])
    print('選擇行數據通過一個單獨列的值來篩選:', '\n', df[df.age > 32])

    print('行和列轉置:', '\n', df.T)

    print('統計每一列(數字類型)平均值:', '\n', df.mean())
    print('統計每一列(數字類型)平均值取整:', '\n', round(df.mean()))
    print('統計每一行(數字類型)平均值:', '\n', df.mean(1))

# inplace = True時會改變舊的DataFrame
def pandas_deal(df):
    #print('刪除列改變原來數據:','\n',df.drop('price', axis = 1, inplace = True))
    print('刪除列不改變原來數據:','\n',df.drop('price', axis = 1))
    print('刪除所有均爲空值的行:', '\n', df.dropna(how='all'))
    print('刪除包含缺失值的行:','\n',df.dropna())
    print('填充所有空值(NaN)用數字0:','\n',df.fillna(value=0))
    print('填充某一列空值(NaN)用數字0:','\n',df.price.fillna(value=0))
    print('填充某一列空值(NaN)用price均值:','\n',df['price'].fillna(df['price'].mean(),inplace = True))
    print('修改某個字段的值替換:','\n',df['city'].replace('SH', 'shanghai',inplace = True))
    print('修改某個字段的值大小寫轉換','\n',df['city'].str.lower())
    print('修改某一列的數據格式:','\n',df['age'].astype(float))

    print('表格值:','\n',df)

 

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