python之pandas入門操作


本文章是建議入門者直接上手操作,在操作中再去想為什么,是什么?

--理論知識暫時不寫了,可自行百度 ,跟着代碼來入門,簡單粗暴。

import pandas as pd
import numpy as np
from pandas import Series,DataFrame

#數據結構:Series 和DataFrame

#Series 是一個定長的字典序列  定長:相當於兩個ndarray
#Series有兩個基本屬性:index和values   index默認0,1,2...遞增  可以自定義索引如: index=['a','b'..]
x1 = Series([1,2,3,4])
# print(x1)
x2 = Series(data=[1,2,3,4],index=['a','b','c','d'])
# print(x2)

#也可用字典的方式來創建Series
d = {'a':1,'b':2,'c':3,'d':4}
x3 = Series(d)
# print(x3)

#DataFrame 類型數據結構-類似數據庫表——包含了行索引和列索引
data = {'chinese':[66,95,93,90,80],'English':[65,85,92,88,90],'Math':[30,98,96,77,90]}
df1 = DataFrame(data)
# print(df1)
#設置行索引index  以及列索引columns
df2 = DataFrame(data,index=['ZhangFei','GuanYu','ZhaoYun','HuangZhong','DianWei'],columns=['English','Math','chinese'])
# print(df2)
"""
df1 結果
  chinese  English  Math
0       66       65    30
1       95       85    98
2       93       92    96
3       90       88    77
4       80       90    90

df2結果
            English  Math  chinese
ZhangFei         65    30       66
GuanYu           85    98       95
ZhaoYun          92    96       93
HuangZhong       88    77       90
DianWei          90    90       80
"""

#了解了基本的Series和DataFrame兩個數據結構后,我們從數據處理的流程來繼續學習使用方法

#數據的導入和輸出
#pandas允許直接從xlsx,csv文件中導入數據,也可輸出到xlsx,csv中
#xlsx excel文件自行准備
score = DataFrame(pd.read_excel('pandas_data.xlsx'))
# score.to_excel('data1.xlsx')
# df2.to_excel('data1.xlsx')
#pip install openpyxl
#pip install pandas
# print(score)


#數據清洗
# drop()刪除不需要的行或列
# df2 = df2.drop(index=['ZhangFei'])
# df2 = df2.drop(columns=['chinese'])
# print(df2)

# rename重命名列名 columns,  rename(columns=new_name,inplace=True)
# df2.rename(columns={'chinese':'Yuwen','English':'Yingyu'},inplace=True)
# print(df2)

#去重復的值 drop_duplicates() 自動去重行
data1 = {'chinese':[66,66,95,93,90,80],'English':[65,65,85,92,88,90],'Math':[30,30,98,96,77,90]}
df3 = DataFrame(data1,index=['ZhangFei','ZhangFei','GuanYu','ZhaoYun','HuangZhong','DianWei'],columns=['English','Math','chinese'])
df3 = df3.drop_duplicates()
# print(df3)

#格式問題---更改數據格式--astype()
#eg:將chinese字段值改成str或者int64類型
df3['chinese'].astype('str')
# import numpy as np
# df3['chinese'].astype(np.int64)
# print(df3)

#數據間的空格--先把格式轉換成str類型,strip函數去空格 map()映射
# df3['chinese']=df3['chinese'].map(str.strip)
# #刪除左空格
# df3['chinese']=df3['chinese'].map(str.lstrip)
# #右空格
# df3['chinese']=df3['chinese'].map(str.rstrip)
# #特殊字符
# df3['chinese']=df3['chinese'].map(str.rstrip('$'))

#大小寫轉換
#
df3.columns=df3.columns.str.upper()
#
df3.columns=df3.columns.str.lower()
#首字母大寫
df3.columns=df3.columns.str.title()

# 查找空值  空值NAN  isnull()
df3.isnull()  #對應字段 返回True或Flask

#apply函數對數據進行清洗--使用頻率較高
#eg:大小寫轉化
# apply(str.upper)
df4 = DataFrame(data={'name':'ZhangSan'},index=['1'])
# print(df4)
df4['name'] = df4['name'].apply(str.upper)
# print(df4)
#apply也可定義函數在apply中使用 apply(func)



#數據統計
#如果有遇到控制NaN會自動排除
#min()  max()   sum()  mean() 平均值
#median() 中位數  var()方差  std()標准差
#argmin()統計最小值的索引位置  argmax()統計最大值的索引位置
#idmin() 統計最小值的索引值    idxmax()統計最大值的索引值

######統計函數千千萬,describe()函數最便捷  統計大禮包。。
df6 = DataFrame({'name':['ZhangFei', 'GuanYu', 'a', 'b', 'c'], 'data1':range(5)})
# print(df6.describe())
# print(df6)
"""
          data1
count  5.000000
mean   2.000000
std    1.581139
min    0.000000
25%    1.000000
50%    2.000000
75%    3.000000
max    4.000000
"""

#數據合並
#將多個渠道源的多個數據庫表進行合並,
#一個DataFrame為一個數據表內容  兩個合並使用merge()
df7 = DataFrame({'name':['Zhangfei','lisi','zhangsan,','a']})
df8 = DataFrame({'name':['Zhangfei','lisi','a,','a']})

#基於指定列進行連接---健的交集
# df9 = pd.merge(df7,df8,on='name')
#inner內連接內鏈接是 merge 合並的默認情況,inner 內連接也為健交集
df9 = pd.merge(df7,df8,how='inner')
# print(df9)

#如何用SQL方式打開Pandas
#可以直接使用sql語句來操作pandas
from pandasql import sqldf,load_meat,load_births
df10 = DataFrame({'name':['ZhangFei','GuanYu','a','b','c'],'data1':range(5)})
#將sql作為參數傳入匿名函數中  sql參數, 設置globals全局參數
pydf10 = lambda sql:sqldf(sql,globals())
sql = "select * from df10 where name='ZhangFei'"

print(pydf10(sql))



"""
Pandas中有Series和DataFrame兩種重要的數據結構。
    Series:是一個定長的字典序列。有兩個基本屬性:index,values
    DataFrame:類似於數據庫表的一種數據結構。我們甚至可以像操作數據庫表那樣對DataFrame數據進行
    連接,合並,查詢等等
    常用DataFrame進行數據清晰:用到的發方法有:
        - describe() 統計性描述
        - drop_duplicates() 刪除重復行
        - rename(columns=...) 更名
        - dropna() 刪除具有空的行
        - isnull() 判斷空值
        - fillna() 填充空值 
        - apply() 應用函數
        - merge() 合並df
        - value_counts() 統計某列的各類型個數
        - read_excel() to_excel() 讀取和保存excel
        - set_index() 設置索引
        - cut 分組

"""

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM