日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > ChatGpt >内容正文

ChatGpt

pandas series取值_【小学生级】pandas入门到精通备查表——AI未来系列3

發布時間:2025/3/12 ChatGpt 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pandas series取值_【小学生级】pandas入门到精通备查表——AI未来系列3 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在未來面前,每個人都是學生

江海升月明,天涯共此時,關注江時!

篇為AI未來系列第三篇,中階部分開始。pandas的數據分析功能比excel強太多,基本上學會pandas,走遍天下都不怕。這是我的備查字典, 是比較實用的一章。大概再介紹幾個庫就開始全面的實戰案例系列,且行且珍惜。

小學生級,阿姨也會,pandas入門到精通備查表。

Pandas是基于NumPy 的一種工具,其出現是為了解決數據分析任務。
Pandas吸納了大量庫和一些標準的數據模型,提供了高效操作大型數據集所需的工具。
Pandas中的函數和方法能夠使我們快速便捷地處理數據。
它是使Python成為強大而高效的數據分析環境的重要因素之一。http://pandas.pydata.org/pandas-docs/stable/api.html

http://pandas.pydata.org/

import numpy as np import pandas as pd # 首先導入pandas庫

一、序列Series

序列Series是一個一維數組結構,可以存入任一種Python數據類型(integers, strings, floating point numbers, Python objects, 等等)
序列Series由兩部分構成,一個是index,另一個是對應的值,注意兩者的長度必須一樣。序列Series和數組array很類似,大多數numpy的函數都可以直接應用與序列Series
序列Series也像一個固定大小的字典dict,可以通過index來賦值或者取值

1.1 序列Series生成

print('通過數組來生成序列Series') s_array = np.random.randn(5) s = pd.Series(s_array, index = ['a','b','c','d','e']) sprint('通過字典來生成序列Series') s_dict= {'a':11,'b':1000,'c':123213,'d':-1000} s = pd.Series(s_dict) s

1.2 序列Series性質和計算

s = pd.Series(np.random.randn(5), index = ['a','b','c','d','e']) s# 可以通過index來查看序列Series中的元素 print('查看序列中index為a的元素:',s['a']) print('查看序列中index為a,c,e的元素:n',s[['a','c','e']])# 基于index 可以修改序列s中的元素 print('原序列:n',s) s['a'] = 1000000000 print('修改后的序列:n',s)s = pd.Series(np.random.randn(5), index = ['a','b','c','d','e']) print('原序列:n',s) # 大多數numpy的函數可以直接應用于 序列 Series print('序列相加:n',s+s) print('序列每個元素求指數:n',np.exp(s))s = pd.Series(np.random.randint(1,5,5), index = ['a','b','c','d','e']) print('查看序列s的index:',s.index) print('查看序列的值:',s.values) print('序列s的一階差分:n',s.diff())ss = pd.Series(np.random.randint(1,3,100)) print(ss[:10]) print('查看序列的唯一取值:',ss.unique())

二、數據框DataFrame

數據框DataFrame是一個二維數組結構,可以存入任一種Python數據類型(integers, strings, floating point numbers, Python objects, 等等)
數據框DataFrame由三部分構成,一個是行索引index,一個是列名,另一個則是取值。

2.1 數據框生成

print('由字典來產生數據框') data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],'year': [2000, 2001, 2002, 2001, 2002],'pop': [1.5, 1.7, 3.6, 2.4, 2.9]} frame = pd.DataFrame(data) frameprint('由列表來產生數據框') data = [['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],[2000, 2001, 2002, 2001, 2002],[1.5, 1.7, 3.6, 2.4, 2.9]] frame = pd.DataFrame(data,index=['state','year','pop']).T frame

2.2 數據框基本性質

data = pd.DataFrame(np.random.randint(1,100,(10,4)),columns=['x1','x2','x3','x4']) print('首先查看數據框的形狀',data.shape) print('查看數據框的頭部:') print(data.head()) print('---------------------') print('查看數據框的尾部:') print(data.tail()) print('---------------------') print('查看數據框的索引index') print(data.index)print('查看數據框的列名') print(data.columns) print('---------------------') print('查看數據框的值,其格式為數組array') print(data.values) print('---------------------') print('查看數據框的基礎描述性統計') print(data.describe())# 在原有的數據框中新加入一列 data['新列'] = ['HAHA'] * len(data) data# 數據框的轉置 data.T

2.3 數據框截取

2.3.1 行截取

print('查看數據框data索引為1的行——方法一') print(data.ix[1]) print('---------------------') print('查看數據框data索引為1的行——方法二') print(data.loc[1,:]) print('---------------------') print('查看數據框data前3行') print(data[:3])

2.3.2 列截取

print('數據框data的x3列選取') print(data['x3']) print('---------------------') print('數據框data的x3,x4兩列同時選取') print(data[['x3','x4']])

2.3.3 數據框行列同時截取

print('截取數據框data的前4行的x3和x4列') data.loc[:3,['x3','x4']]

2.3.4 數據框條件截取

print('截取數據框x3大于等于50的記錄') print(data[data['x3']>=50]) print('---------------------') print('截取數據框x3大于20且x4小于50的記錄') print(data[(data['x3']>20)&(data['x4']<50)]) print('---------------------') print('截取數據框x3大于20的x1列') print(data[data['x3']>50]['x1'])

2.4 數據框缺失值處理

例如下面這個數據框data,其中就存在缺失值

data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],'year': [2000, 2001, 2002, 2001, 2002],'pop': [1.5, 1.7, 3.6, 2.4, 2.9]} data = pd.DataFrame(data) data.loc[1,'pop'] = np.NaN data.loc[3,'state'] = None datadata.dropna() #刪除含有缺失的行data.dropna(how="all") #表示該行都為缺失的行才刪除 注意是這一行中的每一個元素都為缺失才刪除這一行data.dropna(how="all", axis=1) #表示該列若都為缺失的列則刪除,注意是這一列的每個元素都為缺失才會刪除這一列data.dropna(thresh=3, axis=0) #表示保留至少存在3個非NaN的行,即如果某一行的非缺失值個數小于3個,則會被刪除data.dropna(thresh=3, axis=1) #表示保留至少存在3個非NaN的列,即如果某一列的非缺失值個數小于3個,則會被刪除

上面對缺失值的處理都是將缺失值剔除,下面介紹了填充缺失值的方法

dataprint('用0填充數據框中的缺失值,0是可選參數之一') data.fillna(value=0)data.fillna(method='ffill') #填充缺失值 用缺失值所在列的前一個非NaN值來進行填充 data.fillna(method="bfill") #用缺失值所在列的后一個非NaN來填充

2.5 數據框排序

data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],'year': [2000, 2001, 2002, 2001, 2002],'pop': [1.5, 1.7, 3.6, 2.4, 2.9]} data = pd.DataFrame(data) dataprint('數據框data按列pop降序排序') data.sort(columns='pop',ascending=False)print('數據框data按列pop升序排序') data.sort(columns='pop',ascending=True)print('數據框data按行索引index降序排序') data.sort_index()

2.6 數據框的基本函數

print('按列求均值') data.mean() print('按行求均值') data.mean(axis=1)

函數匯總

下面的函數都是通過數據框.函數名(參數設置)來進行調用,一般的參數是axis=0/1,選擇為0則是按行來實現函數,1則是按列來實現函數。

2.7 數據框拼接

下面介紹了三個函數來實現數據框的拼接功能——concat函數,merge函數和join函數

2.7.1 數據框拼接—pd.concat

data1 = pd.DataFrame(np.random.randn(4,3),index=['a','b','c','d'],columns=['x1','x2','x3']) data1data2 = pd.DataFrame(np.random.randn(4,3),index=['e','f','g','h'],columns=['x1','x2','x3']) data2print('按行拼接') pd.concat([data1,data2],axis=0) data1 = pd.DataFrame(np.random.randn(4,3),index=['a','b','c','d'],columns=['x1','x2','x3']) data1data2 = pd.DataFrame(np.random.randn(4,3),index=['a','b','c','e'],columns=['x1','x3','x4']) data2print('按列拼接') pd.concat([data1,data2],axis=1)

2.7.2 數據框拼接—pd.merge

pd.merge一般針對的是按列合并。

pd.merge( left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True, suffixes=('_x', '_y'), copy=True, indicator=False)

left: 一個dataframe對象
right: 另一個dataframe對象
how: 可以是'left', 'right', 'outer', 'inner'. 默認為inner。
on: 列名,兩個dataframe都有的列。如果不傳參數,而且left_index和right_index也等于False,則默認把兩者交叉/共有的列作為鏈接鍵(join keys)。可以是一個列名,也可以是包含多個列名的list。
left_on: 左邊dataframe的列會用做keys。可以是列名,或者與dataframe長度相同的矩陣array。
right_on: 右邊同上。
left_index: 如果為Ture,用左側dataframe的index作為連接鍵。如果是多維索引,level數要跟右邊相同才行。
right_index: 右邊同上。
sort: 對合并后的數據框排序,以連接鍵。
suffixes: 一個tuple,包字符串后綴,用來加在重疊的列名后面。默認是('_x','_y')。
copy: 默認Ture,復制數據。
indicator: 布爾型(True/FALSE),或是字符串。如果為True,合并之后會增加一列叫做'_merge'。是分類數據,用left_only, right_only, both來標記來自左邊,右邊和兩邊的數據。

left_data = pd.DataFrame({'time':['2017-09-11','2017-09-12','2017-09-13'],'x1':[1,2,3],'x2':[2,2,1]}) left_dataright_data = pd.DataFrame({'time':['2017-09-10','2017-09-11','2017-09-12'],'x3':[-1,-1,10],'x4':[2,-100,0]}) right_dataprint('按time拼接,只保留共同的部分') pd.merge(left_data,right_data,on='time')print('按time拼接,但所有的數據都保留下來') pd.merge(left_data,right_data,on='time',how='outer')print('按time拼接,但所有的數據都保留下來,且生成一列來表示數據的來源') pd.merge(left_data,right_data,on='time',how='outer',indicator='數據來源')

2.7.3 數據框拼接—.join

DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)

other:一個DataFrame、Series(要有命名),或者DataFrame組成的list。
on:列名,包含列名的list或tuple,或矩陣樣子的列 (如果是多列,必須有MultiIndex)。 跟上面的幾種方法一樣,用來指明依據哪一列進行合并。 如果沒有賦值,則依據兩個數據框的index合并。
how:合并方式, {‘left’, ‘right’, ‘outer’, ‘inner’}, 默認‘left‘。
lsuffix:字符串。用于左側數據框的重復列。 把重復列重新命名,原來的列名+字符串。 【如果有重復列,必須添加這個參數。】
rsuffix:同上。右側。
sort:布爾型,默認False。如果為True,將鏈接鍵(on的那列)按字母排序。

left_data = pd.DataFrame({'time':['2017-09-11','2017-09-12','2017-09-13'],'x1':[1,2,3],'x2':[2,2,1]}) left_dataright_data = pd.DataFrame({'time':['2017-09-10','2017-09-11','2017-09-12'],'x2':[-1,-1,10],'x4':[2,-100,0]}) right_dataprint('注意到兩個拼接的數據框,含有相同的列x2和time,故重新命名了這兩個列') left_data.join(right_data,lsuffix='_left',rsuffix='_right')

2.8 數據框重復值剔除

有時候,希望能夠剔除掉數據框中的重復記錄

data = pd.concat([left_data,left_data],axis=0) dataprint('查看數據框中是否存在重復記錄,標記為True的為重復記錄') data.duplicated()print('剔除數據框中的重復記錄') data.drop_duplicates()

2.9 基于pandas的文件操作

在進行數據分析之前,可能需要讀寫自己的數據文件。或者在完成數據分析之后,想把結果輸出到外部的文件
在Python中,利用pandas模塊中的幾個函數,可以輕松實現這些功能,利用pandas讀取文件之后數據的格式為數據框,且如果想用pandas將數據輸出為外部文件,也要先確保要輸出的文件的格式為數據框
注意在運行下面的程序之前,需要確保文件已經在目錄下

2.9.1 讀取txt文件

text = pd.read_table('data/training/test2.txt',index_col=0,delimiter=' ') # 文件所在的路徑是必須輸入的 # index_col=0指定第一列為index # delimiter指定了數據間的分隔符,分隔符可以使空格,制表符,;等等 # 這個函數中還有很多參數可以定義 text

2.9.2 讀取excel/csv文件

import pandas as pd data_excel = pd.read_excel('data/training/test3.xlsx') # 文件所在的路徑是必須輸入的 data_excel.head()data_csv = pd.read_csv('data/training/test3_csv.csv',encoding='GBK') # 文件所在的路徑是必須輸入的 #這里要注意,encoding='GBK'一般是要加上,涉及到編譯解碼的問題 data_csv.head()

2.9.3 輸出為excel/csv文件

由于使用了pandas庫,我們在將想要的數據集輸出為外部的excel/csv文件時,首先要確保文件的格式為數據框

data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],'year': [2000, 2001, 2002, 2001, 2002],'pop': [1.5, 1.7, 3.6, 2.4, 2.9]} frame = pd.DataFrame(data) frame# 將數據集frame輸出為外部文件 frame.to_excel('data/training/寫出為excel.xlsx') frame.to_csv('data/training/寫出為csv.csv')

2.10 數據框分組及透視表

2.10.1 分組——groupby函數

例如下面這個數據框data,希望根據地域或者性別來分組再進行數據分析

data = {'地域': ['上海', '上海', '非上海', '非上海', '上海','非上海','上海','上海','上海'],'性別': ['男', '女', '男', '女', '男','女','女','男','男'],'x1': [1.5, 1.7, 3.6, 2.4, 2.9,2.2,100,2.0,0],'x2': np.random.randn(9)} data = pd.DataFrame(data) dataprint('按地域求x1和x2的均值') data.groupby('地域').mean()grouped = data.groupby('地域') #形成按地域分組后的數據集 grouped grouped.describe()

print('按地域和性別求x1,x2的均值') data.groupby(['地域','性別']).mean()grouped = data.groupby(['地域','性別']) functions = ['count','mean','max','min'] print('對按地域和性別分組后的數據框,可以進行多個函數的同時操作') res = grouped['x1','x2'].agg(functions) resres.to_excel('data/training/agg.xlsx')print('對不同的列可以進行不同的操作,例如對x2求均值,而對x1求和,最大值和最小值') grouped = data.groupby(['地域','性別']) grouped.agg({'x1': ['sum','max','min'], 'x2': 'mean'})

2.10.2 apply函數,可以對分組后的數據框進行自定義的函數操作

def top(data_in, n=5, column='x2'):return data_in.sort(column)[-n:]print('對數據框data按地域進行分組之后,且對于每一組,按x2排序,且輸出x2最小的二條記錄') data.groupby('地域').apply(top, n=2) print('對數據框data按地域進行分組之后,且對于每一組,按x2排序,且輸出x2最小的二條記錄') data.groupby('地域').apply(top, n=2)

小例子——分組的線性回歸

import pandas as pd

例如我們有如下數據集,希望按年分組,利用每一年的y對x進行回歸

data = pd.DataFrame([]) x = np.random.randn(2192) data['x'] = x data['y'] = 2 * x + 1 + np.random.randn(2192)*0.2 data.index = list(pd.date_range('2011-01-01','2016-12-31')) data['年份'] = data.index.year data.head()

先對數據框by_year按年份進行分組

by_year = data.groupby('年份') #按年份分組

按年份分組后,求y和x之間的相關系數

by_year.apply(lambda g:g['y'].corr(g['x'])) #按年分組 求y和x求相關系數 注意這里使用了lambda函數

按年份分組后,y對x進行回歸

import statsmodels.api as smdef regression(data, y_name, x_name): #定義一個回歸的函數Y = data[y_name]X = data[x_name]X['intercept'] = 1.0result = sm.OLS(Y,X).fit()return result.paramsby_year.apply(regression,'y',['x']) #按年分組進行回歸

2.10.3 數據透視表——pivot

data = {'地域': ['上海', '上海', '非上海', '非上海', '上海','非上海','上海','上海','上海'],'性別': ['男', '女', '男', '女', '男','女','女','男','男'],'x1': [1.5, 1.7, 3.6, 2.4, 2.9,2.2,100,2.0,0],'x2': np.random.randn(9)} data = pd.DataFrame(data) datadata.pivot_table(index='地域', columns='性別', values='x1',aggfunc='sum')

來源:我的印象筆記整理

ABO
MeJiangShi【ID:siteacher】
AI CREATE FURTURE
VALUE LAST LONG

總結

以上是生活随笔為你收集整理的pandas series取值_【小学生级】pandas入门到精通备查表——AI未来系列3的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久亚洲av永久无码精品 | 国产盗摄一区二区三区 | 久久久77| 久久二区三区 | 激情综合视频 | 中文人妻一区二区三区 | 91视频进入| 日本啊啊视频 | 性网爆门事件集合av | 欧美性视频在线播放 | 日韩美女中文字幕 | 99这里只有精品视频 | 一区二区三区国产精品视频 | 久久久久久久极品 | 成人黄色激情视频 | 性猛交富婆╳xxx乱大交麻豆 | 操操操爽爽爽 | 日韩欧美资源 | 国产一级爽片 | 精品在线视频播放 | 欧美综合影院 | 色哟哟入口国产精品 | 三上悠亚ssⅰn939无码播放 | 九九色网 | 欧美日韩综合一区二区三区 | 亚洲视频精品 | 亚洲精品亚洲人成人网 | 久久女女 | 日韩在线视频一区二区三区 | 精品999视频 | 森泽佳奈av| 日本在线中文字幕专区 | 国产无遮挡免费 | 国产成人无码精品久久二区三 | 精品偷拍网| 久久精品在线视频 | 亚洲成人免费在线视频 | 免费不卡视频 | 久久久久麻豆v国产精华液好用吗 | 亚洲国产精品激情在线观看 | 52av在线| 国产尻逼视频 | 国产精品久久久久久一区二区三区 | 日本jizz在线观看 | 国产精品久久久久久人妻精品动漫 | 成人在线激情 | 久久理论视频 | 日韩精品免费在线观看 | 欧美做爰啪啪xxxⅹ性 | 精品偷拍网 | 最好看的中文字幕国语电影mv | 日韩精品av一区二区三区 | 深夜精品视频 | 极品新婚夜少妇真紧 | 毛片无码一区二区三区a片视频 | 欧美极品喷水 | 国产又大又硬又粗 | 精品乱子一区二区三区 | 欧美成人h版在线观看 | 中文字幕一区二区三区精品 | 日韩亚洲一区二区三区 | 噼里啪啦国语电影 | 人妻精油按摩bd高清中文字幕 | 亚洲av无码电影在线播放 | 一区二区三区91 | 在线观看亚洲成人 | 免费福利av | 欧洲精品一区二区三区久久 | 国产精品国产三级国产aⅴ下载 | 国产精品久草 | 在线观看欧美亚洲 | 国产成人91 | 国产精品videossex国产高清 | 日本三级韩国三级三级a级中文 | 蜜桃臀av | 亚洲国产精品久久久久婷蜜芽 | 亚洲jizzjizz| 欧美啪啪一区二区 | 森泽佳奈在线播放 | 国产美女被遭强高潮免费网站 | 亚洲福利网站 | 色婷婷久久 | 国产成人综合网 | www.狠狠操| 日本高清不卡一区 | 国产真实伦对白全集 | 天堂av网在线 | 日韩精品在线观看一区二区 | 麻豆视频在线播放 | www.在线观看网站 | 国产良妇出轨视频在线观看 | 亚洲av无码一区二区三区dv | 日本吃奶摸下激烈网站动漫 | 亚洲人高潮女人毛茸茸 | 亚洲精品91 | 性欧美巨大乳 | 黄色a级在线观看 | 国产av不卡一区二区 | 小泽玛利亚一区二区三区在线观看 |