dataframe數據結構


目錄

  • Series數據操作
  • 算術運算符
  • DataFrame創建方式
  • 常見屬性
  • DataFrame數據類型補充
  • 讀取外部數據
  • 文本文件讀取
  • excel表格讀取
  • 數據庫數據讀取
  • 網頁表格數據讀取
  • 數據概覽
  • 行列操作
  • 數據篩選
  • 數據處理

 

Series數據操作

res = pd.Series([111,222,333,444,555])
#
res['aaa'] = 999
#
res.loc['aaa']
#
res[0] = 123
#
del res[2]

 

算術運算符

sr1 = pd.Series([12,23,34], index=['c','a','d'])
sr3 = pd.Series([11,20,10,14], index=['d','c','a','b'])
sr1.add(sr3,fill_value=0)


add        加(add)
sub        減(subtract)
div        除(divide)
mul        乘(multiply)

 

 

DataFrame創建方式

表格型數據結構,相當於一個二維數組,含有一組有序的列也可以看作是由Series組成的共用一個索引的字典

第一種:
res = pd.DataFrame({'one':[1,2,3,4],'two':[4,3,2,1]})
第二種:
pd.DataFrame({'one':pd.Series([1,2,3],index=['a','b','c']),'two':pd.Series([1,2,3],index=['b','a','c'])})
第三種:
pd.DataFrame(np.array([[10,20],[30,40]]),index=['a','b'],columns=['c1','c2'])

 

 更多(了解)

pd.DataFrame([np.arange(1,8),np.arange(11,18)])
s1 = pd.Series(np.arange(1,9,2))
s2 = pd.Series(np.arange(2,10,2))
s3 = pd.Series(np.arange(5,7),index=[1,2])
df5 = pd.DataFrame({'c1':s1,'c2':s2,'c3':s3})

 

常見屬性

1.index    行索引
2.columns  列索引
3.T           轉置
4.values   值索引
5.describe 快速統計

 

DataFrame數據類型補充

# 在DataFrame中所有的字符類型數據在查看數據類型的時候都表示成object

 

 

讀取外部數據

pd.read_csv()    # 可以讀取文本文件和.csv結尾的文件數據
pd.read_excel()   # 可以讀取excel表格文件數據
pd.read_sql()     # 可以讀取MySQL表格數據
pd.read_html()    # 可以讀取頁面上table標簽內所有的數據

 

文本文件讀取

重要參數

1.filepath_or_buffer:指定txt文件或csv文件所在的具體路徑 

2.sep:指定原數據集中各字段之間的分隔符,默認為逗號”,” 

 

3.header:是否需要將原數據集中的第一行作為表頭,默認將第一行用作字段名稱,如果原始數據沒有表頭需要將該參數設置為None 

4.names:如果原數據集中沒有字段,可以通過該參數在數據讀取時給數據框添加具體的表頭

 

5.usecols:指定需要讀取原數據集中的哪些變量名

 

6.skiprows:數據讀取時,指定需要跳過原數據集開頭的行數

7.skipfooter:數據讀取時,指定需要跳過原數據集末尾的行數 

 

8.converters:用於數據類型的轉換(以字典的形式指定) 
9.encoding:如果文件中含有中文,有時需要指定字符編碼

基本使用

import pandas as pd
data01 = pd.read_csv(r'data_test01.txt',
           skiprows = 2,  # python能自動過濾掉完全無內容的空行
           sep = ',',  # 默認就是逗號,寫不寫都行
           skipfooter = 3,
# 1.針對id原本是01、02自動變成了1、2
           converters = {'id':str},
# 2.點擊文件另存修改文件編碼之后再次讀取出現亂碼
           encoding='utf-8',
# 3.移除收入千分位非逗號的其他符號
           thousands = '&',
# 4.手動將文件表頭行刪除再次讀取
           header = None,    # 默認用索引
           names = ['id','year','month','day','gender','occupation','income'],
# 5.指定讀取的字段
          usecols = ['id','income']
           )

查看方法幫助

方式1:
    方法名?
方式2:
    光標停留在方法名左括號后面
    先按住shift鍵不松開,再按tab鍵

 

excel表格讀取

重要參數

1.io:指定電子表格的具體路徑 
2.sheet—name:指定需要讀取電子表格中的第幾個Sheet,既可以傳遞整數也可以傳遞具體的Sheet名稱 
3.header:是否需要將數據集的第一行用作表頭,默認為是需要的 
4.skiprows:讀取數據時,指定跳過的開始行數
5.skip_footer:讀取數據時,指定跳過的末尾行數 
6.index_col:指定哪些列用作數據框的行索引(標簽)
7.na_values:指定原始數據中哪些特殊值代表了缺失值 
8.thousands:指定原始數據集中的千分位符 
9.convert_float:默認將所有的數值型字段轉換為浮點型字段 
10.converters:通過字典的形式,指定某些列需要轉換的形式

基本使用

pd.read_excel(r'data_test02.xlsx',
             header = None,
              names = ['ID','Product','Color','Size'], 
             converters = {'ID':str}
             )

 

數據庫數據讀取

# 在anaconda環境下直接安裝pymysql模塊
import pymysql
conn = pymysql.connect(host,port,user,password, database, charset)

 

 

 重要屬性

1.host:指定需要訪問的MySQL服務器
2.port:指定訪問MySQL數據庫的端口號 charset:指定讀取MySQL數據庫的字符集,如果數據庫表中含有中文,一般可以嘗試將該參數設置為 “utf8”或“gbk”
3.user:指定訪問MySQL數據庫的用戶名
4.password:指定訪問MySQL數據庫的密碼
5.database:指定訪問MySQL數據庫的具體庫名

基本使用

 

 

 網頁表格數據讀取

pd.read_html(r'https://baike.baidu.com/item/NBA%E6%80%BB%E5%86%A0%E5%86%9B/2173192?fr=aladdin')

 

 

數據概覽

columns     # 查看列 
index       # 查看行
shape       # 行列 
dtypes      # 數據類型 

head()      # 取頭部多條數據
dtail()      # 取尾部多條數據

 

行列操作

df['列字段名詞']  # 獲取指定列對應的數據

df.rename(column={'舊列名稱':'新列名稱'})

# 創建新的列
df['新列名稱']=df.列名稱/(df.列名稱1+df.列名稱2)

# 自定義位置
df.insert(3,'新列名稱',新數據)

# 添加行
df3 = df1.append(df2)

 

 

 數據篩選

# 獲取指定列數據
df['列名']  # 單列數據
df[['列名1','列名2',...]]  # 多列數據


# 獲取指定行數據
eg:
res4.loc[res4['區域名稱']=='川沙']
res4.loc[(res4['區域名稱']=='川沙') & ([res4['總價']>300]),['','']]

 

 

 

 數據處理

sec_car = pd.read_csv(r'sec_cars.csv')
sec_car.head()
sec_car.dtypes
sec_car.Boarding_time = pd.to_datetime(sec_car.Boarding_time, format = '%Y年%m月')

 

 

sec_car.New_price = sec_car.New_price.str[:-1].astype(float)

eg:
浦東二手房的總價數據(如圖)

 


免責聲明!

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



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