❶ 利用python處理Excel數據
如果數據沒有標題行,可用pandas添加默認的列名
不讀取哪裡數據,可用skiprows=[i],跳過文件的第i行不讀取
第一次出現的保留,其餘刪除
最後一次出現的保留,其餘刪除
** 對客戶聊天記錄進行分組 **
** 對符合多個條件進行分組**
需要對每一行進行權重設置,列錶行數少可行,過多不可行
假設有4行數據,設置采樣權重
自動生成數據的數量,均值,標准差等數據
相關系數在-1到1之間,接近1為正相關,接近-1為負相關,0為不相關
參考書籍:
《利用pythonj進行數據分析》
《從Excel到Python——數據分析進階指南》
❷ 如何用python進行數據分析
1、Python數據分析流程及學習路徑
數據分析的流程概括起來主要是:讀寫、處理計算、分析建模和可視化四個部分。在不同的步驟中會用到不同的Python工具。每一步的主題也包含眾多內容。
根據每個部分需要用到的工具,Python數據分析的學習路徑如下:
相關推薦:《Python入門教程》
2、利用Python讀寫數據
Python讀寫數據,主要包括以下內容:
我們以一小段代碼來看:
可見,僅需簡短的兩三行代碼即可實現Python讀入EXCEL文件。
3、利用Python處理和計算數據
在第一步和第二步,我們主要使用的是Python的工具庫NumPy和pandas。其中,NumPy主要用於矢量化的科學計算,pandas主要用於表型數據處理。
4、利用Python分析建模
在分析和建模方面,主要包括Statsmdels和Scikit-learn兩個庫。
Statsmodels允許用戶瀏覽數據,估計統計模型和執行統計測試。可以為不同類型的數據和每個估算器提供廣泛的描述性統計,統計測試,繪圖函數和結果統計列表。
Scikit-leran則是著名的機器學習庫,可以迅速使用各類機器學習演算法。
5、利用Python數據可視化
數據可視化是數據工作中的一項重要內容,它可以輔助分析也可以展示結果。
❸ Python處理Excel效率高十倍(下篇)通篇硬幹貨,再也不用加班啦
《用Python處理Excel表格》下篇來啦!
身為工作黨或學生黨的你,平日里肯定少不了與Excel表格打交道的機會。當你用Excel處理較多數據時,還在使用最原始的人工操作嗎?現在教你如何用Python處理Excel,從此處理表格再也不加班,時間縮短數十倍!
上篇我們進行了一些事前准備,目的是用Python提取Excel表中的數據。而這一篇便是在獲取數據的基礎上,對Excel表格的實操處理。
第9行代碼用來指定創建的excel的活動表的名字:
·不寫第9行,默認創建sheet
·寫了第9行,創建指定名字的sheet表
第9行代碼,通過給單元格重新賦值,來修改單元格的值
第9行代碼的另一種寫法sheet['B1'].value = 'age'
第10行代碼,保存時如果使用原來的(第7行)名字,就直接保存;如果使用了別的名字,就會另存為一個新文件
插入有效數據
使用append()方法,在原來數據的後面,按行插入數據
·insert_rows(idx=數字編號, amount=要插入的行數),插入的行數是在idx行數的下方插入
·insert_cols(idx=數字編號, amount=要插入的列數),插入的位置是在idx列數的左側插入
·delete_rows(idx=數字編號, amount=要刪除的行數)
·delete_cols(idx=數字編號, amount=要刪除的列數)
move_range(「數據區域」,rows=,cols=):正整數為向下或向右、負整數為向左或向上
舉個例子:
openpyxl.styles.Font(name=字體名稱,size=字體大小,bold=是否加粗,italic=是否斜體,color=字體顏色)
其中,字體顏色中的color是RGB的16進製表示
再者,可以使用for循環,修改多行多列的數據,在這里介紹了獲取的方法
Alignment(horizontal=水平對齊模式,vertical=垂直對齊模式,text_rotation=旋轉角度,wrap_text=是否自動換行)
水平對齊:『distributed』,『justify』,『center』,『left』, 『centerContinuous』,'right,『general』
垂直對齊:『bottom』,『distributed』,『justify』,『center』,『top』
當然,你仍舊可以調用for循環來實現對多行多列的操作
設置行列的寬高:
·row_dimensions[行編號].height = 行高
·column_dimensions[列編號].width = 列寬
合並單元格有下面兩種方法,需要注意的是,如果要合並的格子中有數據,即便python沒有報錯,Excel打開的時候也會報錯。
merge_cells(待合並的格子編號)
merge_cells(start_row=起始行號,start_column=起始列號,end_row=結束行號,end_column=結束列號)
拆分單元格的方法同上
unmerge_cells(待合並的格子編號)
unmerge_cells(start_row=起始行號,start_column=起始列號,end_row=結束行號,end_column=結束列號)
create_sheet(「新的sheet名」):創建一個新的sheet表
第11行,使用title修改sheet表的名字
remove(「sheet名」):刪除某個sheet表
要刪除某sheet表,需要激活這個sheet表,即:將其作為活動表(關於活動表的定義請看前面文章開頭寫的有)下面8~11行代碼展示了原始活動表與手動更換活動表,第13行代碼刪掉活動表
背景知識
numpy與pandas
NumPy是 Python 語言的一個擴展程序庫,支持大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫;pandas 是基於NumPy 的一種工具,該工具是為解決數據分析任務而創建的,我們需要利用Pandas進行Excel的合並
1.下面的代碼生成了一個5行3列的包含15個字元的嵌套列表
(注意,第4行代碼:15是等於35的,如果是15對應43,或者16對應5*3都會報錯)
(注意,第5行代碼,雖然5行3列是15個數據,但是可以指定數據從1開頭,到16結束)
2.添加表頭
使用pandas庫的DataFrame來添加表頭。關於列印的結果,把最左側的一列去掉之後會發現結果很和諧,這是因為最左側的一列代錶行號。此時xx變數的類型是
xlsxwriter模塊一般是和xlrd模塊搭配使用的,
xlsxwriter:負責寫入數據,
xlrd:負責讀取數據。
1.創建一個工作簿
2.創建sheet表
3.寫入數據
❹ python疫情數據分析怎麼和excel連接
爬取國內疫情數據。data_download(),引用包requests、json。1)訪問網站獲取數據;2)保存數據成json文件
將數據轉存到excel。cpdata_toexcel(),引用包openpyxl、json。
1)從json文件中抽取所需數據,欄位需求:省份、地市、總確診人數、總疑似病例、總死亡人數。
2)創建Excel表,數據保存。
讀取文件數據畫疫情地圖。show_data(),引用包pandas、pyecharts。
❺ python怎麼分析excel中的數據
下面就詳細的講述整個實現過程。
1、在計算機上安裝python(x,y)2.6.6版本。這一步是確保機器上的python開發環境,具體的安裝過程在此就不在贅述,網上相關資料比較多
2、建議安裝一個Notepad++,這樣寫代碼比較方便
3、在Notepad++中進行相關的設置,因為python對行縮進符比較敏感,用Tab鍵和space鍵混合使用,會導致編譯錯誤,程序無法執行;但是一般tab鍵和Space鍵所敲出來的空格是隱藏的,為了編輯方便,就需要在Notepad中將空格符顯示出來。設置如下圖所示。
4、安裝相應的開發包,這里採用的開發包為xlrd-0.9.3包(讀取excel)和xlwt-0.7.5包(存寫excel,只支持.xls格式,不支持.xlsx格式,如果需要.xlsx格式,請下載更高版本的安裝包)。具體的安裝過程在此不再贅述,請詳見點擊打開鏈接http://blog.csdn.net/dxh0907070012/article/details/23967247。
5、為所要處理的excel文件單獨建立一個文件夾。
6、具體代碼如下:
[python] view plain print?
#coding=utf-8
import xlrd
import xlwt
import string
import numpy as np
import os
class OperExcel():
def rExcel(self,inEfile,strfilename,outfile):
rfile=xlrd.open_workbook(inEfile)
table=rfile.sheet_by_index(0)
nrows=table.nrows-1
ncols=table.ncols
stationsheet=xlrd.open_workbook('D://rainfall_deal//stationposition.xlsx')
stationtable=stationsheet.sheet_by_index(0)
nstnrows=stationtable.nrows-1
wb=xlwt.Workbook()
ws=wb.add_sheet('year_month')
month=['1','2','3','4','5','6','7','8','9','10','11','12']
for stationindex in range(1,nstnrows):
eachday_rf=[]
yearsum=0
monthday_rf=[]
eachmon_rf=0
stncode=stationtable.cell(stationindex,0).value
#計算每個站點的年降水總量
for r in range(1,nrows):
if(table.cell(r,0).value==stncode):
❻ 像Excel一樣使用Python(一)
在進行數據處理時,如果數據簡單,數量不多,excel是大家的首選。但是當數據眾多,類型復雜,需要靈活地顯示切片、進行索引、以及排序時,python會更加方便。藉助python中的numpy和pandas庫,它能快速完成各種任務,包括數據的創建、檢查、清洗、預處理、提取、篩選、匯總、統計等。接下來幾篇文章,將以excel為參照,介紹python中數據的處理。
提到pandas,那就不得不提兩類重要的數據結構,Series和DataFrame,這兩類數據結構都是建立在numpy的數組array基礎上。與array相比,Series是一個一維的數據集,但是每個數據元素都帶有一個索引,有點類似於字典。而DataFrame在數組的基礎上,增加了行索引和列索引,類似於Series的字典,或者說是一個列表集。
所以在數據處理前,要安裝好numpy , pandas。接下來就看看如何完成一套完整的數據操作。
創建數據表的方法分兩種,分別是從外部導入數據,以及直接寫入數據。
在python中,也可外部導入xlsx格式文件,使用read_excel()函數:
import pandas as pd
from pandas import DataFrame,Series
data=DataFrame(pd.read_excel('c:/python27/test.xlsx'))
print data
輸出:
Gene Size Function
0 arx1 411 NaN
1 arx2 550 monooxygenase
2 arx3 405 aminotransferase
……
即:調用pandas中read_excel屬性,來讀取文件test.xlsx,並轉換成DataFrame格式,賦給變數data。在每一行後,自動分了一個索引值。除了excel,還支持以下格式文件的導入和寫入:
Python寫入的方法有很多,但還是不如excel方便。常用的例如使用相等長度的字典或numpy數組來創建:
data1 = DataFrame(
{'Gene':['arx1','arx2','arx3'],
'Size':[411,550,405],
'Func':[np.NaN,'monooxygenase','aminotransferase ']})
print data1
輸出
Func Gene Size
0 NaN arx1 411
1 monooxyg arx2 550
2 amino arx3 405
分配一個行索引後,自動排序並輸出。
在python中,可以使用info()函數查看整個數據的詳細信息。
print data.info()
輸出
RangeIndex: 7 entries, 0 to 6
Data columns (total 3 columns):
Gene 7 non-null object
Size 7 non-null int64
Function 5 non-null object
dtypes: int64(1), object(2)
memory usage: 240.0+ bytes
None
此外,還可以通過shape, column, index, values, dtypes等函數來查看數據維度、行列組成、所有的值、 數據類型:
print data1.shape
print data1.index
print data1.columns
print data1.dtypes
輸出
(3, 3)
RangeIndex(start=0, stop=3, step=1)
Index([u'Func', u'Gene', u'Size'], dtype='object')
Func object
Gene object
Size int64
dtype: object
在excel中可以按「F5」,在「定位條件」中選擇「空值」,選中後,輸入替換信息,再按「Ctrl+Enter」即可完成替換。
在python中,使用函數 isnull 和 notnull 來檢測數據丟失, 包含空值返回True,不包含則返回False。
pd.isnull(data1)
pd.notnull(data1)
也可以使用函數的實例方法,以及加入參數,對某一列進行檢查:
print data1['Func'].isnull()
輸出
Func Gene Size
0 True False False
1 False False False
2 False False False
再使用fillna對空值進行填充:
data.fillna(value=0)
#用0來填充空值
data['Size'].fillna(data1['Size'].mean())
#用data1中Size列的平均值來填充空值
data['Func']=data['Func'].map(str.strip)
#清理Func列中存在的空格
Excel中可以按「Ctrl+F」,可調出替換對話框,替換相應數據。
Python中,使用replace函數替換:
data['Func'].replace('monooxygenase', 'oxidase')
將Func列中的'monooxygenase'替換成'oxidase'。
Excel中,通過「數據-篩選-高級」可以選擇性地看某一列的唯一值。
Python中,使用unique函數查看:
print data['Func'].unique()
輸出
[nan u'monooxygenase' u'aminotransferase' u'methyltransferase']
Excel中,通過UPPER、LOWER、PROPER等函數來變成大寫、小寫、首字母大寫。
Python中也有同名函數:
data1['Gene'].str.lower()
Excel中可以通過「數據-刪除重復項」來去除重復值。
Python中,可以通過drop_plicates函數刪除重復值:
print data['Func'].drop_plicates()
輸出
0 NaN
1 monooxygenase
2 aminotransferase
3 methyltransferase
Name: Func, dtype: object
還可以設置「 keep=』last』 」參數,後出現的被保留,先出現的被刪除:
print data['Func'].drop_plicates(keep='last')
輸出
2 aminotransferase
3 methyltransferase
6 monooxygenase
8 NaN
Name: Func, dtype: object
內容參考:
Python For Data Analysis
藍鯨網站分析博客,作者藍鯨(王彥平)
❼ 怎樣用Python處理Excel數據
怎麼在Excel中運行python腳本?這個問題由來已久,很多pythoner都希望直接用python控制Excel,但是只能從外部調用,有沒有一個VBA的東西可以直接在Excel中運行呢?答案是有,DataNitro就是這么一個東西,看看下面Excel中的界面,他就是了
❽ 怎樣在Excel中使用python腳本
一、使用工具:excel、python
二、使用方法和步驟:
1、先安裝python2.7,然後配置環境變數,保證python在該環境中,打開開始菜單,找到計算機,然後右鍵單擊它,選擇【屬性】
三、注意事項:切記不要勾選python,如果通過這種方式安裝python,你原先安裝的python就無法使用了。
❾ 如何用python操作excel
指定選取三列然後挑選出同時滿足>=1或者同時<=-1的 將其所有數據存入新的csv表格中
程序如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date : 2014-04-10 21:47:56
# @Function: 指定選取三列然後挑選出同時滿足>=1或者同時<=-1的 將其所有數據存入新的csv表格中
# @Author : BeginMan
import os
import string
import xlrd
import xlwt
def get_data():
"""獲取excel數據源"""
file = r'C:\Users\Administrator\Desktop\pytool\xlrd\initial_log_data.xls' # 改成自己的路徑
filepath = raw_input(u'請將xls文件路徑粘貼進去,如果程序里已經指定了文件則按Enter鍵繼續:')
is_valid = False # 驗證文件
try:
filepath = [file, filepath][filepath != '']
print filepath
# 判斷給出的路徑是不是xls格式
if os.path.isfile(filepath):
filename = os.path.basename(filepath)
if filename.split('.')[1] == 'xls':
is_valid = True
data = None
if is_valid:
data = xlrd.open_workbook(filepath)
except Exception, e:
print u'你操作錯誤:%s' %e
return None
return data
def handle_data():
"""處理數據"""
data = get_data()
if data:
col_format = ['B', 'C', 'D'] # 指定的列
inp = raw_input(u'請選擇指定的三列,用逗號分隔,默認的是B,C,D(英文逗號,不區分大小寫),如果選擇默認則按Enter鍵繼續:\n')
try:
inp = inp.split(',')
col_format = [col_format,inp][len([i for i in inp if i in string.letters]) == 3]
col_format = [i.upper() for i in col_format] # 轉換成大寫
table = data.sheet_by_index(0) # 選取第一個工作區
nrows = table.nrows # 行數
ncols = table.ncols # 列數
str_upcase = [i for i in string.uppercase] # 所有大寫字母
i_upcase = range(len(str_upcase)) # 對應的數字
ncols_dir = dict(zip(str_upcase,i_upcase)) # 格式成字典
col_index = [ncols_dir.get(i) for i in col_format] # 獲取指定列所對應的索引
# 選取的三列是否同時滿足 >=1或者同時<=-1
print u'正在檢索中……'
count = 0
result = []
for i in xrange(nrows):
cell_0 = table.cell(i,col_index[0]).value
cell_1 = table.cell(i,col_index[1]).value
cell_2 = table.cell(i,col_index[2]).value
if (cell_0>=1 and cell_1>=1 and cell_2>=1) or (cell_0<=-1 and cell_1<=-1 and cell_2<=-1):
result.append(table.row_values(i)) # 將符合要求的一行添加進去
count += 1
print u'該文件中共%s行,%s列,其中滿足條件的共有%s條數據' %(nrows, ncols, count)
print u'正在寫入數據……'
col_name = col_format[0]+col_format[1]+col_format[2]
if write_data(result, col_name):
print u'寫入成功!'
except Exception, e:
print u'你操作錯誤:%s' %e
return None
else:
print u'操作失敗'
return None
def write_data(data, name):
"""寫入數據,data為符合條件的數據列表,name表示指定的哪三個列,以此命名"""
file = xlwt.Workbook()
table = file.add_sheet(name,cell_overwrite_ok=True)
l = 0 # 表示行
for line in data:
c = 0 # 表示一行下的列數
for col in line:
table.write(l,c,line[c])
c += 1
l += 1
defatul_f = r'C:\Users\Administrator\Desktop\pytool\xlrd' # 默認路徑
f = raw_input(u'請選擇保存文件的路徑:按回車跳過:')
f_name = r'\%s.xls' % name
filepath = [defatul_f+f_name, f+f_name][f != '']
file.save(filepath)
return True
def main():
handle_data()
if __name__ == '__main__':
main()
❿ 分析excel和python在處理數據時各自的優劣點
兩者都是數據分析處理工具,excel上手簡單,操作界面人性化,小批量數據處理神器;
python需要點編程基礎,安裝步驟、導入庫、編譯器、語法讓很多人不懂了,但它在擴展性強,存在大量外部擴展庫,什麼批量合並excel工作簿、批量發送郵件、自動化生成報表之類,雖然這些excel都可以,但涉及到VB語言,遠不及python語法簡單;但是如果一份幾百條數據,需要統計一個結果,excel插入透視表,分類匯總兩步搞定,你非要用python,先是導入pandas/numpy,又是xlrd,接著又是groupby,一頓操作猛如虎,看著十分高大上,人家excel2秒鍾早已搞定;
數據處理:兩者都很熟練的情況下,不考慮數據數量,基本平分秋色,excel成熟體系的快捷鍵、功能;python豐富的各類外部庫;
數據分析:這個的話excel雖然有規劃求解、方差分析、T檢驗之類的工具,但是你要搞個k-mean聚類、決策樹之類的,excel是不行的,還有就是處理數據級與運行效率的問題,excel單表100W,能處理得差不多就二三十萬,多了就卡死了,python就不存在這個問題。
總而言之,公司日常報表,財務類、考勤類、部門小組業績類,這些基本excel就可以搞定,但你要搞大數據分析,隨隨便便幾百萬條數據,excel表示心有餘而力不足。