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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据分析(一)

發布時間:2024/3/26 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据分析(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

數據加載

一、加載數據

載入數據:?

逐塊讀取

更改表頭、索引

初步觀察數據

?保存數據

pandas基礎

Series

DataFrame

?篩選

探索性數據分析


數據加載

一、加載數據

import numpy as np import pandas as pd

載入數據:?

df = pd.read_csv('train.csv') #相對路徑 #絕對路徑如:df = pd.read_csv('C:\Users\Lenovo\train.csv') df.head(3) #輸出頭三行

? 思考:tsv和csv的區別,pd.read_csv()和pd.read_table()的不同

各種格式文件讀取:IO tools (text, CSV, HDF5, …) — pandas 1.4.2 documentation

pd.read_csv()一般是讀取csv文件的,pd.read_table()讀取txt文件。函數pd.read_csv()和pd.read_table()的內容相同,只是默認分隔符不同。

在read_csv()中,定界符為 “ , ” ,在read_table()中,定界符為 \ t 。

df = pd.read_table('train.csv') df.head(3)


通過sep=’,’,讓pd.read_table()實現pd.read_csv()的功能:

#此時輸出內容與csv一致 df=pd.read_table('train.csv',sep=',') df.head(3)

同理,通過sep=’\t’,讓pd.read_csv()實現pd.read_table()的功能。

逐塊讀取

當讀取的文件較大時,這時若直接利用pandas讀取,會給電腦造成太大的壓力:

chunker = pd.read_csv('train.csv', chunksize=1000) for chunk in chunker:print(chunk)

【提示】可以chunker(數據塊)是什么類型?用for循環打印出來出處具體的樣子是什么?

? ?讀取pandas中DataFrame的數據類型。按列豎切切成幾塊讀取,每次讀1000行。

更改表頭、索引

將表頭改成中文,索引改為乘客ID

PassengerId => 乘客ID,Survived => 是否幸存,Pclass => 乘客等級(1/2/3等艙位),Name => 乘客姓名,Sex => 性別,Age => 年齡,SibSp => 堂兄弟/妹個數,Parch => 父母與小孩個數,Ticket => 船票信息,Fare => 票價,Cabin => 客艙,Embarked => 登船港口。

df = pd.read_csv('train.csv', names=['乘客ID','是否幸存','倉位等級','姓名','性別','年齡','兄弟姐妹個數','父母子女個數','船票信息','票價','客艙','登船港口'],index_col='乘客ID',header=0) df.head()

思考:所謂將表頭改為中文其中一個思路是:將英文列名表頭替換成中文。還有其他的方法嗎??

df = pd.read_csv('train.csv') df.rename(columns={'PassengerId':'乘客ID','Survived':'是否幸存','Pclass' :'倉位等級','Name' :'姓名','Sex' :'性別','Age' :'年齡','SibSp' :'兄弟姐妹個數','Parch' :'父母子女個數','Ticket' :'船票信息','Fare' :'票價','Cabin' :'客艙','Embarked' :'登船港口'}, inplace = True) df =df.set_index('乘客ID') df

初步觀察數據

#查看數據的基本信息 df.info()#觀察表格前10行的數據和后15行的數據 df.head(10) df.tail(15)#判斷數據是否為空,為空的地方返回True,其余地方返回False df.isnull().head()

?保存數據

#將加載并做出改變的數據,在工作目錄下保存為一個新文件train_chinese.csv df.to_csv('train_chinese.csv')

pandas基礎

Series

是一種類似于一維數組的對象,它由一組數據以及一組與之相關的數據便簽(即索引)組成,僅由一組數據即可產生最簡單的Series。

1、直接定義,自動生成索引

a=Series([9,-3,4,2])

輸出:

0? 9

1? -3

2? 4

3? 2

系統會自動為Series數據創建整數索引,可通過Series的values和index屬性獲取其數組表示形式和索引對象:

print(Series.values)

print(Series.index)

與字典型數據的keys(),values(),items()類似。

2、直接將一個字典型數據a轉化為Series數據,Series(a)

sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000} example_1 = pd.Series(sdata) example_1

鍵值變成index,數據值變成columns。

3、創建Series時可自定義索引值

b=Series([9,-3,4,2],index=['a','c','d','b'])

那么訪問Series中的值時可以直接用b['index']的方法,例如b['c'],b[['d','a']]可以同時選取多個值。

DataFrame

是一個表格型數據,含有一組有序的列,每一列可以是不同的類型值。DataFrame可以看成是由多個Series組成的字典,它們共用一個索引。

在構建DataFrame時,最常用的就是先創建一個data,data一般可以是字典和數組,再用a=DataFrame(data)來轉換為DataFrame結構。在DataFrame(data)時也可以同時傳入index和columns參數,兩個參數必須是列表型。

#DataFrame會自動加上索引 data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],'year': [2000, 2001, 2002, 2001, 2002, 2003],'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]} example_2 = pd.DataFrame(data) example_2

?任務:查看DataFrame數據的每列的名稱

df.columns

任務:?查看某列的所有值 [有多種方法]

df['Cabin'].head(3)#ordf.Cabin.head(3)

任務:加載文件"test_1.csv",然后對比"train.csv",看看有哪些多出的列,然后將多出的列刪除

test_1 = pd.read_csv('test_1.csv') test_1.head(3)

多了一列a

刪除多余行:

del test_1['a'] test_1.head(3)

?思考:還有其他的刪除多余的列的方式嗎?

有的!

#不同于del方法,drop方法一次可刪除多列 test_1 = test_1.drop(['a'],axis=1,inplace=True) test_1.head(3)

任務:將['PassengerId','Name','Age','Ticket']這幾個列元素隱藏,只觀察其他幾個列元素

#利用drop刪除方法,但是未設置inplace=True,故相當于創建副本,隱藏表格內容。 df.drop(['PassengerId','Name','Age','Ticket'],axis=1).head(3)

?篩選

以"Age"為篩選條件,顯示年齡在10歲以下的乘客信息。

df[df["Age"]<10].head(3)

?以"Age"為條件,將年齡在10歲以上和50歲以下的乘客信息顯示出來,并將這個數據命名為midage:

midage = df[(df["Age"]>10)& (df["Age"]<50)] midage.head(3)

將midage的數據中第100行的"Pclass"和"Sex"的數據顯示出來:

midage = midage.reset_index(drop=True) midage.head(3) midage.loc[[100],['Pclass','Sex']]#reset_index()重置索引 #在獲得新的index,原來的index變成數據列,保留在數據框中,不想保留原來的index的話可以使用參數drop=True,默認False。 #因為midage為原數據表摘出來的,索引是打亂的,所以需要reset_index()重置索引,才能進行摘取100行操作。

對比iloc和loc的異同:

loc是根據index來索引,比如df定義了一個index,那么loc就根據這個index來索引對應的行。iloc并不是根據index來索引,而是根據行號來索引,行號從0開始,逐次加1。

midage.loc[[100,105,108],['Pclass','Name','Sex']] midage.iloc[[100,105,108],[2,3,4]]

探索性數據分析

任務:利用Pandas對示例數據進行排序,要求升序

#自己構建一個都為數字的DataFrame數據 frame = pd.DataFrame(np.arange(8).reshape((2, 4)),#創建一個DataFrame對象 index=['2', '1'], columns=['d', 'a', 'b', 'c']) frameframe.sort_values(by='c', ascending=True) #構建的DataFrame中的數據根據c列,ascending=True升序排列frame.sort_index() # 讓行索引升序排序 frame.sort_index(axis=1) # 讓列索引升序排序 frame.sort_index(axis=1, ascending=False) # 讓列索引降序排序 frame.sort_values(by=['a', 'c'], ascending=False)# 讓a,c兩列數據同時降序排序

任務:利用Pandas進行算術計算,計算兩個DataFrame數據相加結果

frame1_a = pd.DataFrame(np.arange(9.).reshape(3, 3),columns=['a', 'b', 'c'],index=['one', 'two', 'three']) frame1_b = pd.DataFrame(np.arange(12.).reshape(4, 3),columns=['a', 'e', 'c'],index=['first', 'one', 'two', 'second']) frame1_a frame1_b frame1_a + frame1_b

? ? +? ? ? ?? ?=

現在通過泰坦尼克號數據如何計算出在船上最大的家族有多少人?

''' 還是用之前導入的chinese_train.csv如果我們想看看在船上,最大的家族有多少人(‘兄弟姐妹個數’+‘父母子女個數’),我們該怎么做呢? ''' max(text['兄弟姐妹個數'] + text['父母子女個數'])

?任務:Pandas describe()函數查看數據基本統計信息

#建立一個例子 frame2 = pd.DataFrame([[1.4, np.nan], [7.1, -4.5],[np.nan, np.nan], [0.75, -1.3]], index=['a', 'b', 'c', 'd'], columns=['one', 'two']) frame2

?

# 調用 describe 函數,觀察frame2的數據基本信息frame2.describe()''' count : 樣本數據大小 mean : 樣本數據的平均值 std : 樣本數據的標準差 min : 樣本數據的最小值 25% : 樣本數據25%的時候的值 50% : 樣本數據50%的時候的值 75% : 樣本數據75%的時候的值 max : 樣本數據的最大值 '''

?現在分別看看泰坦尼克號數據集中 票價、父母子女 這列數據的基本統計數據:

''' 看看泰坦尼克號數據集中 票價 這列數據的基本統計數據 ''' text['票價'].describe()------------------------------------------------------------------------------------------- ''' count 891.000000 mean 32.204208 std 49.693429 min 0.000000 25% 7.910400 50% 14.454200 75% 31.000000 max 512.329200 Name: 票價, dtype: float64 '''

總結

以上是生活随笔為你收集整理的数据分析(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

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