# -*- coding: utf-8 -*-
"""created on tue feb 26 13:32:28 2019
@author: administrator
""""""
pandas 資料處理
"""from pandas import dataframe
from pandas import series
df=dataframe()
df#判斷整行重複
df.duplicated()
#判斷一列重複
df.duplicated('name')
df.drop_duplicates('age')
df1=df.drop_duplicates('name')
df1#刪除字串左、右或首、尾指定的字元
df['name'].str.strip()
df['name'].str.rstrip('n')
#重置索引
df.set_index('name')
df4=df.set_index('name')
df4.ix['john']#索引查詢
df4.loc['john']#索引查詢
from pandas import dataframe
from pandas import read_excel
df2=read_excel(r'k:\\demodata\\rz.xlsx',sheetname='sheet2')
df2"""
rz.xlsx的sheet2資料:
學號 姓名 英語 數分 高代 解幾
0 2308024241 成龍 76 40.0 23.0 60
1 2308024244 周怡 66 47.0 47.0 44
2 2308024251 張波 85 nan 45.0 60
3 2308024249 朱浩 65 72.0 62.0 71
4 2308024219 封印 73 61.0 47.0 46
5 2308024201 遲培 60 71.0 76.0 71
6 2308024347 李華 67 61.0 65.0 78
7 2308024307 陳田 76 69.0 nan 69
8 2308024326 余皓 66 65.0 61.0 71
9 2308024219 封印 73 61.0 47.0 46
"""#缺失資料識別
df2.isnull()
df2.notnull()
#缺失資料刪除
df2.dropna()
newdf=df2.dropna()
newdf
#缺失值填充
df2.fillna('101')
#用前乙個值替代空值
df2.fillna(method='pad')
#用後乙個值代替空值
df2.fillna(method='bfill')
#用均值來填充
df2.fillna(df.mean())
#用選定列的均值來填充
df2.fillna(df.mean()['高代':'解幾'])#用解幾的平均值填充高代的空值
#用不同列用指定的值填充
df2.fillna()
"""i_nuc.xls的資料:
學號 ** ip
2308024241 18922254812 221.205.98.55
2308024244 13522255003 183.184.226.205
2308024251 13422259938 221.205.98.55
2308024249 18822256753 222.31.51.200
2308024219 18922253721 120.207.64.3
2308024201 222.31.51.200
2308024347 13822254373 222.31.59.220
2308024307 13322252452 221.205.98.55
2308024326 18922257681 183.184.230.38
2308024320 13322252452 221.205.98.55
2308024342 18922257681 183.184.230.38
2308024310 19934210999 183.184.230.39
2308024435 19934210911 185.184.230.40
2308024432 19934210912 183.154.230.41
2308024446 19934210913 183.184.231.42
2308024421 19934210914 183.154.230.43
2308024433 19934210915 173.184.230.44
2308024428 19934210916
2308024402 19934210917 183.184.230.4
2308024422 19934210918 153.144.230.7
"""df3=read_excel(r'k:\\demodata\\i_nuc.xls',sheetname='sheet4')
df3.head()#前5行資料
df3['**']#抽取某列
df3['**']=df3['**'].astype(str)#**列轉換成字串
#slice操作,抽取
df3['**'].str.slice(0,3)#抽取**前三位
df3['**'].str.slice(3,7)
df3['**'].str.slice(7,11)
#split操作,字段拆分
df3['ip'].str.strip()
df3['ip'].str.split('.',1,true)#按第一"."切,新增1列
newdf3=df3['ip'].str.split('.',1,true)
newdf3.columns=['ip1','ip2-4']#給新dataframe新增列名
#條件過濾
df3=read_excel(r'k:\\demodata\\i_nuc.xls',sheetname='sheet4')
df3[df3.**》13500000000]
df3[df3.**.between(1340000000,13999999999)]
df3[(df3.**》=13422259938)&(df3.**<138222254373)]
import numpy
r=numpy.random.randint(0,10,3)
df3.loc[r,:]#抽取r行資料
df5=df3.set_index('學號')
df5.loc[2308024241:2308024201]#按索引抽取範圍內資料
df5.loc[:,'**'].head()#選取「**」列的資料
import pandas as pd
from pandas import dataframe
df6=dataframe()
df6.loc[[1,2]]
#數**算
"""df2
out[249]:
學號 姓名 英語 數分 高代 解幾
0 2308024241 成龍 76 40.0 23.0 60
1 2308024244 周怡 66 47.0 47.0 44
2 2308024251 張波 85 nan 45.0 60
3 2308024249 朱浩 65 72.0 62.0 71
4 2308024219 封印 73 61.0 47.0 46
5 2308024201 遲培 60 71.0 76.0 71
6 2308024347 李華 67 61.0 65.0 78
7 2308024307 陳田 76 69.0 nan 69
8 2308024326 余皓 66 65.0 61.0 71
9 2308024219 封印 73 61.0 47.0 46
"""df2['解幾'].astype(int).min()
df2['解幾'].astype(int).max()
#scale測量,標準化
from sklearn import preprocessing
import numpy as np
df9=df2['數分'].fillna(80)
df9_scaled=preprocessing.scale(df9)
python基礎課程
1.運算子 可以代表兩個數相加也可以代表兩個字串相連 a 12 22 print a b good job print b 代表兩個數相減也可以代表求乙個數的相反數 a 7print a 代表兩個數相乘也可以代表字串重複 a 5 898 print a b hello 3 print b 代表兩個數...
python 資料處理基礎
2 python 語法簡介 型別轉化 int x base 將x轉換為乙個整數 long x base 將x轉換為乙個長整數 float x 將x轉換到乙個浮點數 complex real imag 建立乙個複數 str x 將物件 x 轉換為字串 repr x 將物件 x 轉換為表示式字串 eva...
Python基礎課程筆記(一)
1 python www.python.org 2 print hello python print hello python 3 布林值 and,or,not 4 字串 都行。print 100 200 100 200 5 python注釋是 6 如果乙個字串包含很多需要轉義的字元,對每個字元都要...