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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

pandas的菜鸟级应用(谁都能学会)

發布時間:2023/12/20 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pandas的菜鸟级应用(谁都能学会) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡述:
這是本人第一篇博文,因為自己想向最近很火的人工智能,大數據,進行靠攏。所以就從基本做起,掌握基本的python 的庫,像 pandas ,numpy 。水平有限大家見諒。
pandas 是基于NumPy 的一種工具,該工具是為了解決數據分析任務而創建的。Pandas 納入了大量庫和一些標準的數據模型,提供了高效地操作大型數據集所需的工具。pandas提供了大量能使我們快速便捷地處理數據的函數和方法。你很快就會發現,它是使Python成為強大而高效的數據分析環境的重要因素之一。(來自百度百科)
一.生成數據
最基礎的把不管你進行大數據還是啥的首先你得先讀數據吧。
1.導入庫`

import numpy as np import pandas as pd

2.讀入csv 或 xlsx 文件。

df = pd.DataFrame(pd.read_csv('name.csv',header=1)) df = pd.DataFrame(pd.read_excel('name.xlsx'))

1)關于 read_csv 這個文件有很多參數:
咱羅列一下
這是官網的數據

read_csv(filepath_or_buffer, sep=',', delimiter=None, header='infer', names=None, index_col=None, usecols=None, squeeze=False, prefix=None, mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, iterator=False, chunksize=None, compression='infer', thousands=None, decimal=b'.', lineterminator=None, quotechar='"', quoting=0, escapechar=None, comment=None, encoding=None, dialect=None, tupleize_cols=None, error_bad_lines=True, warn_bad_lines=True, skipfooter=0, doublequote=True, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None)

官網原文鏈接:(http://pandas.pydata.org/pandas-docs/stable/io.html)
有點嚇人,但是別慌,我感覺常用的有幾個,總結一下。常用的有,`

(1).filepath_or_buffer 文件的地址和名字`

df = pd.read_csv('mcup(6).CSV', sep=',',engine='python')

(2)sep 間隔。如果不使用參數,默認用逗號分隔。有一個好用的間隔符
‘\s+’
正則表達式中\s匹配任何空白字符,包括空格、制表符、換頁符等等。
但是要分情況 。不一定‘\s+’ 好用。
(3)delimiter sep 會失效 pd.read_csv(path,sep='\s+',delimiter='\n')sep 不會有作用

(4)delim_whitespace
delim_whitespace=True,分隔符我們就簡化成了和sep=’\s+'一樣能處理各種常見分割符
(5) header 默認為0 可為數字也可為list(列表) 沒有列名時要設成None
為列表時,就像[1,3]時是將第1行和第3行作為標題,第2行就會跳過,并從第4行開始讀取數據
當為0 時就是直接第一行為列名,第二行開始為數據,其他同理。 沒有列名時要設成None
第一行開始讀為數據。
我感覺差不多就這些,再用到別的看官網。
2) 關于read_excel()這個

pd.read_excel(io, sheet_name=0, header=0, names=None, index_col=None, usecols=None, squeeze=False,dtype=None, engine=None, converters=None, true_values=None, false_values=None, skiprows=None, nrows=None, na_values=None, parse_dates=False, date_parser=None, thousands=None, comment=None, skipfooter=0, convert_float=True, **kwds)

在羅列幾個常用的:
(1)io Excel的存儲路徑

io = r'C:\Users\Administrator\Desktop\data.xlsx' #這里的r是轉意。data = pd.read_excel("io")

(2)sheet_name

工作表的名稱(中英文都行)。

data = pd.read_excel(io, sheet_name = 1) #

還可以 sheet_name = “SheetN” S 要大寫 。代表第N個sheet
(3) header 和上面的類似:、
(4) names 重新進行命名 ,像數據庫里的 As

df = pd.read_excel(io,sheet_name="2017" ,names = ['year','day','month'])

假設之前的列名就會別改成 year day month 注意: names 里的個數一定要和列名個數一樣。
(5) index_col 用作索引的列

df = pd.read_excel(io,sheet_name="2017" ,index_col ="年")

以年作為用作索引的列``
(6) usecols 需要讀那些列 可以為整型

df = pd.DataFrame(pd.read_excel("Appendix 1.xls",sheet_name="2018", usecols = [1, 2, 3]))

意思就是讀1,2,3,行
(7)
nrows 讀取多少行。
差不多就這樣:

二.對讀取的信息進行查看
1.看形狀 df.shape
2.基本信息df,info()
3.看格式df.dtype
4.看空值df.isnull()
5.看列名df.columns
6.看前十行df.head
7.看后十行df.tail
三.數據合并
1.用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,validate=None)

left 左面的DataFrame 對象
right 右面的DataFrame 對象
on 用來確定數據集合的主鍵

pd.merge(df1,df2,on = 'country')

left_on right_on用來指列名使不同的列明合并(注意 列名屬性必須相同)

df = pd.merge(df1,df2,left_on="country",right_on ="city")

how 是鏈接方式,默認為inner
how:inner:取交集,outer:并集;left:參照左邊表格行,right:參照右邊表格行
2.concat 合并

pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=None, copy=True)

axis =0 為默認值,上下合并 axis =1 左右合并
join 同上
sort 網上說在大數據時不要用。

df = pd.concat([df1, df2, df3], axis=0, ignore_index=True)#

合并后重新索引。

3.join 合并 (默認為外連接 outer)

df= pd.concat([df1, df2], axis=0, join='outer')

默認之下先是進行列合并 ,有相同的列再行合并

四.數據清洗
1.處理缺失值
首先 isnull() 和 notnull 使用

df.isnull() df.isnutnull()

對于缺失的值來說,我用的都是用0 或用平均值代替 或者直接刪除
1)用0代替df.fillna(0)
2) 用平均值代替

df ['prince']= df.fillna(df['price'].mean())

3)刪除df.dropna()

兩個返回的都是bool 型變量
2.重復值
df.duolicated() 這是找重復值的函數
df.drop_duplicates() 這是去掉重復值。
3.數據之間有空格(這個因為我是小白還沒見過太多數據)
查看 df['名字'].value_counts()
3.去空格:
1)去兩邊的空格

df['name']=df['name'].map(str.strip)

2)去左邊的空格

df['name']=df['name'].map(str.lstrip)

3)去右邊的空格

df['name']=df['name'].map(str.rstrip)

還有就是大小寫的轉換:

1) 全部變成大寫

df['name']=df['name'].map(str.upper)

2)全部變成小寫

df['name']=df['name'].map(str.lower)

3)首字母大寫

df['name']=df['name'].map(str.tittle)

4.檢驗類型
1)檢驗字符

df['name'].apply(lambda x: x.isalpha())

2)檢驗字母

df['name'].apply(lambda x: x.isalpha())

3)檢驗數字

df['name'].apply(lambda x: x.isalnum())

5.改數據類型

df['name']=df['name'].astype(np.int64)

6.數據替換

df['city'].replace('sh', 'shanghai')

五.數據分組
1.groupby 這學期在學數據庫,感覺很像數據庫老師說的pandas 和sql 很像,這個就是按什么分類。

對一個字段

df.groupby('country‘) .count()

對兩個字段

df.groupby(['name','country'])['id'].count()

六.數據篩選

這是最關鍵的至少我感覺(大佬勿噴)
1.直接

df['sum'] = df.apply(lambda x: x.sum(), axis=1) # 行求和,axis=1表示橫向 df.loc['sum'] = df.apply(lambda x: x.sum()) # loc獲取一整列的數據,對一列數據進行求和

2.loc 行索引 以及篩選

print(df1.loc["1"]) aa=df1.loc[( df1['age'] > 1) & (df1['age'] < 10) ] aa=df1.loc[( df1['age'] > 1) ].sort_values(['age'])

注意一定要是行標簽

2 iloc獲取列索引

df1.iloc[0:len(df), 0:3]

0 到3 列 所有行

df_inner.iloc[:3,:2] #冒號前后的數字不再是索引的標簽名稱,而是數據所在的位置,從0開始,前三行,前兩列。

3.重新設置索引

df.reset_index()

4.isin 的簡單應用

df['city'].isin(['beijing'])

也可取反
5.
contains的簡單應用

df = df[~df["名字"].str.contains("王")] #找到名字中沒有王的那個人new_df_object = old_df_object[old_df_object.name.str.contains(r'.*?中國.*')] # 參考的

也可正則化,下一次打算系統總結一下正則化

七.常用操作
刪除一行,axis 指軸
df1.drop(‘列名’, axis=1)
標準差:

df['price'].std()

協方差

df['price'].cov(df['m-point'])

兩個字段的相關性分析

df['price'].corr(df_i['m-point'])

寫入文件

df.to_csv('example.csv') df.to_excel('python.xlsx', sheet_name='love')

大體操作,當然我也只是一個’小學生’,剛剛入門,所以會有理解的偏差,希望大家多多指教。我們共同進步。

總結

以上是生活随笔為你收集整理的pandas的菜鸟级应用(谁都能学会)的全部內容,希望文章能夠幫你解決所遇到的問題。

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