wordpress網(wǎng)站音樂放不全百度搜索服務
pandas學習
一、 pandas基礎
1. 什么是pandas?
一個開源的python類庫:用于數(shù)據(jù)分析、數(shù)據(jù)處理、數(shù)據(jù)可視化
- 高性能
- 容易使用的數(shù)據(jù)結構
- 容易使用的數(shù)據(jù)分析工具
很方便和其他類庫一起使用:
-
numpy:用于數(shù)學計算
-
scikit-learn:用于機器學習
2. pandas 的安裝
方法一:
pip3 install pandas
方法二:
下載使用Python類庫集成安裝包:anaconda link: https://www.anaconda.com
當今最流行的python數(shù)據(jù)分析發(fā)行版
已經(jīng)安裝了數(shù)據(jù)分析需要的幾乎所有的類庫0
3. pandas讀取數(shù)據(jù)
pandas 需要先讀取表格類型的數(shù)據(jù),然后進行分析
數(shù)據(jù)類型 | 說明 | pandas讀取方式 |
---|---|---|
csv ,tsv,txt | 用逗號,tab分割的純文本文件 | pd.read_csv |
excel | 微軟xls或者xlsx | pd.read_excel |
mysql | 關系型數(shù)據(jù)庫表 | pd.read_sql |
-
讀取csv文件
import os import pandas as pdfpath = "E:\MyProject\DataAnalysis\my_pandas\Datas\cpu_temp.csv" # 讀取csv文件的所有數(shù)據(jù) datas = pd.read_csv(fpath) # 查看前幾行的數(shù)據(jù) 默認前5行 da = datas.head() print(da) # 查看數(shù)據(jù)的形狀,返回行和列 ds = datas.shape print(ds) # 查看列名列表 df = datas.columns print(df) # 查看索引列 dg = datas.index print(dg) # 查看每列的數(shù)據(jù)類型 dh = datas.dtypes print(dh)
4. Pandas數(shù)據(jù)結構
import pandas as pd
import numpy as np
-
DataFrame:二維數(shù)據(jù)、整個表格、多行多列
創(chuàng)建DataFrame的方法
-
根據(jù)多個字典序列創(chuàng)建dataframe
data = {'age':[23,45,32,56,32,54,22],'id': [1,2,3,4,5,6,7]'year': [1991,1992,1993,1994,1995,1996,1997]} d1 = pandas.DataFrame(data)
-
df.columns 和df.index
-
-
Series: 一維數(shù)據(jù)、一行或一列
創(chuàng)建Series的三種方法:
-
僅使用數(shù)據(jù)列表即可產(chǎn)生最簡單的Series
sl = pd.Series([1,'a',5.2,7])
-
創(chuàng)建一個具有標簽索引的Series
s2 = pd.Series([1,'a',5.2,7], index=['d','e','f','g'])
-
使用python字典創(chuàng)建Series
sdata = {'a':3500,'b'=4566, 'c'=12556,'d'=12435} s3 = pd.Series(sdata)
-
5. Pandas 數(shù)據(jù)查詢
Pandas查詢數(shù)據(jù)的幾種方法
-
df.loc 根據(jù)行,列的標簽值查詢
-
使用單個標簽值(label)查詢數(shù)據(jù)
-
使用值列表批量查詢
-
使用數(shù)值區(qū)間進行范圍查詢
-
使用條件表達式查詢
df.loc[df["age"]<30,:]
df.loc[(df['a']<=30) & (df['d']>=15) & (df[f]=='ssa')& (df['s']==1), :]
-
調用函數(shù)查詢
df.loc[lambda df : (df['a']<30)& (df['d']>=15),:]
-
-
df.iloc 根據(jù)行,列的數(shù)字位置查詢
-
df.where
-
df.query
注意:.loc既能查詢,又能覆蓋寫入,強烈推薦
6. Pandas新增數(shù)據(jù)列
-
直接賦值 修改列數(shù)值
將第b列的含有@符合的值替換掉 df.loc[:,"b"] = df["b"].str.replace("@","").astype('int32')
計算差值新增一列插值
df[:,"chazhi"] = df["a"] - df["b"]
-
df.apply
index則axis=0 columns則axis=1def get_temp_type(x):if x["CPU0_Temp"]>60:return '高溫'elif x["CPU0_Temp"] < 50:return '低溫'return '常溫' df.loc[:,'temp_type'] = df.apply(get_temp_type,axis=1) df['temp_type'].value_counts()
-
df.assign
可以是lambda函數(shù)也可以是自定義函數(shù) df.assign(cpu0_huashi = lambda x :x['CPU0_Temp']*9/5 + 32,cpu1_huashi = lambda x: x['CPU1_Temp']*9/5 + 32)
-
按條件選擇分組分別賦值
先創(chuàng)建空列(這里第一張創(chuàng)建新列的方式 df["cup_type"] = '' df.loc[df['CPU1_Temp']- df['CPU0_Temp']>10,"cpu_type"] = "溫差大" df.loc[df['CPU1_Temp']- df['CPU0_Temp']<=10,"cpu_type"] = "溫差正常"
7. Pandas的數(shù)據(jù)統(tǒng)計函數(shù)
-
匯總類統(tǒng)計
提取所有數(shù)字列統(tǒng)計結果 df.describe()
-
唯一去重和按值計算
-
唯一性去重
一般不用于數(shù)值列,而是枚舉,分類列
df['b'].unique()
-
按值計算
df[‘a(chǎn)’].value_counts()
-
-
相關系數(shù)和協(xié)方差
用途(超級厲害):
-
兩只股票,是不是同漲同跌?程度多大?正相關還是負相關?
-
產(chǎn)品銷量的波動,跟哪些因素正相關、負相關,程度多大?
對于兩個變量X、Y
-
協(xié)方差:衡量同向反向程度,如果協(xié)方差為正,說明X、Y同向變化,協(xié)方差越大說明同向程度越高;如果協(xié)方差為負,說明X、Y反向變化,協(xié)方差越小說明反向程度越高
df.cov()
-
相關系數(shù):衡量相似程度,當他們的相關系數(shù)為1時,說明兩個變量變化時的正向相似度最大,當相關系數(shù)為-1時,說明兩個變量變化的反向相似度最大
df.corr()df['a'].corr(df['b']) 查看a和b的相關系數(shù) df['a'].corr(df['b']-df['c'])
-
8. Pandas缺失值處理
pandas使用函數(shù)處理缺失值
-
isnull和notnull:檢測是否為空值,可用于df和series
-
dropna:丟棄、刪除缺失值 【下面是參數(shù)介紹】
- axis:刪除還是列,{0 or ‘index’,1 or ‘columns’},default 0
- how: 如果等于any則任何值為空都刪除,如果等于all則所有值都為空才刪除
- inplace:如果為True則修改當前df,否則返回新的df
-
fillna:填充空值 【下面是參數(shù)介紹】
- value:用于填充的值,可以是單個值,或者字典(key為列名,value是值)
- method:等于ffill使用前一個不為空的值填充for word fill;等于bfill使用后一個不為空的值填充back word fill
- axis:按行還是列填充,{0 or ‘index’,1 or ‘columns’}
- inplace:如果為True則修改當前df,否則返回新的df