當前位置:首頁 » 編程語言 » python寫數據

python寫數據

發布時間: 2024-06-20 04:58:21

1. 如何用python把一組數據寫入一個文件

一、將一組數據追加到文件中

例如:將123追加到文件1.txt的末尾

  1. definit():
    withopen('1.txt','r+')astext:
    text.read()
    text.write('123')
    text.close()
    init()




二、將一組數據覆蓋到文件中

將123覆蓋到1.txt文件中,1.txt之前的數據全沒了

definit():
withopen('1.txt','r+')astext:
text.write('123')
text.close()
init()

2. Python中怎樣實現向一個文檔中寫入數據, 要求從倒數第三行開始寫入

將文本每行讀入一個數組中啊 然後直接用python 中數組 insert() 插入

file = open("C:/a.txt", "r")
li = []
#line_counter = 0
while 1:
line = file.readline()
if line:
li.append(line)
else:
break

file.close()
lines = len(li)
『』『
下面從倒數第三行開始插入想要插入的字元串,每行插入的字元用\n分開。如果要寫的東西多,可以從外部文件讀入數據
』『』
li.insert(lines-3,"1st row you want to write \n 2nd row you want to write \n")

file=open("C:/a.txt", "w")
for line in li:
file.write(line)
file.close()

3. 利用Python如何將數據寫到CSV文件中

如果你的數據是列表格式,可以使用一個迭代器,將數據寫入文件,同時添加必要的分隔符以構成csv文件
如果數據是字典格式,需要考慮使用換行符或者其他特殊符號來分割每個字典元素(包括鍵和值)。鍵和值可以考慮使用和之前不重復的分隔符進行分割。
這樣就構成了一個csv文件(csv使用分隔符分割值的文件)
操作方法如下:
1,使用讀寫追加的方式打開csv文件。
2,找到csv文件的結尾。
3,在結尾使用和之前csv使用的分割相同的格式進行數據添加。
4,關閉文件

4. 怎麼用python進行數據

pandas是本書後續內容的首選庫。pandas可以滿足以下需求:

  • 具備按軸自動或顯式數據對齊功能的數據結構。這可以防止許多由於數據未對齊以及來自不同數據源(索引方式不同)的數據而導致的常見錯誤。.

  • 集成時間序列功能

  • 既能處理時間序列數據也能處理非時間序列數據的數據結構

  • 數學運算和簡約(比如對某個軸求和)可以根據不同的元數據(軸編號)執行

  • 靈活處理缺失數據

  • 合並及其他出現在常見資料庫(例如基於SQL的)中的關系型運算

  • 1、pandas數據結構介紹

    兩個數據結構:Series和DataFrame。Series是一種類似於以為NumPy數組的對象,它由一組數據(各種NumPy數據類型)和與之相關的一組數據標簽(即索引)組成的。可以用index和values分別規定索引和值。如果不規定索引,會自動創建 0 到 N-1 索引。

  • #-*- encoding:utf-8 -*-import numpy as npimport osimport pandas as pdfrom pandas import Series,DataFrameimport matplotlib.pyplot as pltimport time#下面看一下cummin函數#注意:這里的cummin函數是截止到目前為止的最小值,而不是加和以後的最小值frame = DataFrame([[1,2,3,4],[5,6,7,8],[-10,11,12,-13]],index = list('abc'),columns = ['one','two','three','four'])print frame.cummin()print frame

  • >>>

  • one two three four

  • a 1 2 3 4

  • b 1 2 3 4

  • c -10 2 3 -13

  • one two three four

  • a 1 2 3 4

  • b 5 6 7 8

  • c -10 11 12 -13
  • 相關系數與協方差

    有些匯總


5. 如何用python寫 數據分析工具

  • 數據導入

  • 導入本地的或者web端的CSV文件;

  • 數據變換;

  • 數據統計描述;

  • 假設檢驗

  • 單樣本t檢驗;

  • 可視化;

  • 創建自定義函數。

  • 數據導入

    這是很關鍵的一步,為了後續的分析我們首先需要導入數據。通常來說,數據是CSV格式,就算不是,至少也可以轉換成CSV格式。在Python中,我們的操作如下:

    Python

    1

    2

    3

    4

    5

    6

    7

    8

  • import pandas as pd

    # Reading data locally

    df = pd.read_csv('/Users/al-ahmadgaidasaad/Documents/d.csv')

    # Reading data from web

    data_url = "t/Analysis-with-Programming/master/2014/Python/Numerical-Descriptions-of-the-Data/data.csv"

    df = pd.read_csv(data_url)

  • 為了讀取本地CSV文件,我們需要pandas這個數據分析庫中的相應模塊。其中的read_csv函數能夠讀取本地和web數據。

    數據變換

    既然在工作空間有了數據,接下來就是數據變換。統計學家和科學家們通常會在這一步移除分析中的非必要數據。我們先看看數據:

    Python

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

  • # Head of the data

    print df.head()

    # OUTPUT

    0 12432934148330010553

    1 41589235 4287806335257

    2 17871922 19551074 4544

    317152 14501 3536 1960731687

    4 12662385 25303315 8520

    # Tail of the data

    print df.tail()

    # OUTPUT

    74 2505 20878 3519 1973716513

    7560303 40065 7062 1942261808

    76 63116756 3561 1591023349

    7713345 38902 2583 1109668663

    78 2623 18264 3745 1678716900

  • 對R語言程序員來說,上述操作等價於通過print(head(df))來列印數據的前6行,以及通過print(tail(df))來列印數據的後6行。當然Python中,默認列印是5行,而R則是6行。因此R的代碼head(df, n = 10),在Python中就是df.head(n = 10),列印數據尾部也是同樣道理。

    在R語言中,數據列和行的名字通過colnames和rownames來分別進行提取。在Python中,我們則使用columns和index屬性來提取,如下:

    Python

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

  • # Extracting column names

    print df.columns

    # OUTPUT

    Index([u'Abra', u'Apayao', u'Benguet', u'Ifugao', u'Kalinga'], dtype='object')

    # Extracting row names or the index

    print df.index

    # OUTPUT

    Int64Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78], dtype='int64')

  • 數據轉置使用T方法,

    Python

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

  • # Transpose data

    print df.T

    # OUTPUT

    01 23 45 67 89

    Abra1243 41581787171521266 5576 927215401039 5424

    Apayao2934 92351922145012385 7452109917038138210588

    Benguet148 42871955 353625307712796 24632592 1064

    Ifugao3300

    ... 69 70 71 72 73 74 75 76 77

    Abra ...12763 247059094 620913316 250560303 631113345

    Apayao ...376251953235126 6335386132087840065 675638902

    Benguet... 2354 4045 5987 3530 2585 3519 7062 3561 2583

    Ifugao ... 9838171251894015560 774619737194221591011096

    Kalinga...

    78

    Abra2623

    Apayao 18264

    Benguet 3745

    Ifugao 16787

    Kalinga16900

    Other transformations such as sort can be done using<code>sort</code>attribute. Now let's extract a specific column. In Python, we do it using either<code>iloc</code>or<code>ix</code>attributes, but<code>ix</code>is more robust and thus I prefer it. Assuming we want the head of the first column of the data, we have

  • 其他變換,例如排序就是用sort屬性。現在我們提取特定的某列數據。Python中,可以使用iloc或者ix屬性。但是我更喜歡用ix,因為它更穩定一些。假設我們需數據第一列的前5行,我們有:

    Python

    1

    2

    3

    4

    5

    6

    7

    8

    9

  • print df.ix[:, 0].head()

    # OUTPUT

    0 1243

    1 4158

    2 1787

    317152

    4 1266

    Name: Abra, dtype: int64

  • 順便提一下,Python的索引是從0開始而非1。為了取出從11到20行的前3列數據,我們有:

    Python

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

  • print df.ix[10:20, 0:3]

    # OUTPUT

    AbraApayaoBenguet

    109811311 2560

    1127366 15093 3039

    12 11001701 2382

    13 7212 11001 1088

    14 10481427 2847

    1525679 15661 2942

    16 10552191 2119

    17 54376461734

    18 10291183 2302

    1923710 12222 2598

    20 10912343 2654

  • 上述命令相當於df.ix[10:20, ['Abra', 'Apayao', 'Benguet']]。

    為了舍棄數據中的列,這里是列1(Apayao)和列2(Benguet),我們使用drop屬性,如下:

    Python

    1

    2

    3

    4

    5

    6

    7

    8

    9

  • print df.drop(df.columns[[1, 2]], axis = 1).head()

    # OUTPUT

    AbraIfugaoKalinga

    0 1243330010553

    1 4158806335257

    2 17871074 4544

    317152 1960731687

    4 12663315 8520

  • axis參數告訴函數到底舍棄列還是行。如果axis等於0,那麼就舍棄行。

    統計描述

    下一步就是通過describe屬性,對數據的統計特性進行描述:

    Python

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

  • print df.describe()

    # OUTPUT

    AbraApayaoBenguetIfugao Kalinga

    count 79.000000 79.00000079.000000 79.000000 79.000000

    mean 12874.37974716860.6455703237.39240512414.62025330446.417722

    std16746.46694515448.1537941588.536429 5034.28201922245.707692

    min927.000000401.000000 148.000000 1074.000000 2346.000000

    25% 1524.000000 3435.5000002328.000000 8205.000000 8601.500000

    50% 5790.00000010588.0000003202.00000013044.00000024494.000000

    75%13330.50000033289.0000003918.50000016099.50000052510.500000

    max60303.00000054625.0000008813.00000021031.00000068663.000000

  • 假設檢驗

    Python有一個很好的統計推斷包。那就是scipy裡面的stats。ttest_1samp實現了單樣本t檢驗。因此,如果我們想檢驗數據Abra列的稻穀產量均值,通過零假設,這里我們假定總體稻穀產量均值為15000,我們有:

    Python

    1

    2

    3

    4

    5

    6

    7

  • from scipy import stats as ss

    # Perform one sample t-test using 1500 as the true mean

    print ss.ttest_1samp(a = df.ix[:, 'Abra'], popmean = 15000)

    # OUTPUT

    (-1.1281738488299586, 0.26270472069109496)

  • 返回下述值組成的元祖:

  • t : 浮點或數組類型
    t統計量

  • prob : 浮點或數組類型
    two-tailed p-value 雙側概率值

  • 通過上面的輸出,看到p值是0.267遠大於α等於0.05,因此沒有充分的證據說平均稻穀產量不是150000。將這個檢驗應用到所有的變數,同樣假設均值為15000,我們有:

    Python

    1

    2

    3

    4

    5

    6

  • print ss.ttest_1samp(a = df, popmean = 15000)

    # OUTPUT

    (array([ -1.12817385, 1.07053437, -65.81425599,-4.564575, 6.17156198]),

    array([2.62704721e-01, 2.87680340e-01, 4.15643528e-70,

    1.83764399e-05, 2.82461897e-08]))

  • 第一個數組是t統計量,第二個數組則是相應的p值。

    可視化

    Python中有許多可視化模塊,最流行的當屬matpalotlib庫。稍加提及,我們也可選擇bokeh和seaborn模塊。之前的博文中,我已經說明了matplotlib庫中的盒須圖模塊功能。

    ;

  • 重復100次; 然後

  • 計算出置信區間包含真實均值的百分比

  • Python中,程序如下:

    Python

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

  • import numpy as np

    import scipy.stats as ss

    def case(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):

    m = np.zeros((rep, 4))

    for i in range(rep):

    norm = np.random.normal(loc = mu, scale = sigma, size = n)

    xbar = np.mean(norm)

    low = xbar - ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))

    up = xbar + ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))

    if (mu > low) & (mu < up):

    rem = 1

    else:

    rem = 0

    m[i, :] = [xbar, low, up, rem]

    inside = np.sum(m[:, 3])

    per = inside / rep

    desc = "There are " + str(inside) + " confidence intervals that contain "

    "the true mean (" + str(mu) + "), that is " + str(per) + " percent of the total CIs"

    return {"Matrix": m, "Decision": desc}

  • 上述代碼讀起來很簡單,但是循環的時候就很慢了。下面針對上述代碼進行了改進,這多虧了Python專家,看我上篇博文的15條意見吧。

    Python

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

  • import numpy as np

    import scipy.stats as ss

    def case2(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):

    scaled_crit = ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))

    norm = np.random.normal(loc = mu, scale = sigma, size = (rep, n))

    xbar = norm.mean(1)

    low = xbar - scaled_crit

    up = xbar + scaled_crit

    rem = (mu > low) & (mu < up)

    m = np.c_[xbar, low, up, rem]

    inside = np.sum(m[:, 3])

    per = inside / rep

    desc = "There are " + str(inside) + " confidence intervals that contain "

    "the true mean (" + str(mu) + "), that is " + str(per) + " percent of the total CIs"

    return {"Matrix": m, "Decision": desc}

  • 更新

    那些對於本文ipython notebook版本感興趣的,請點擊這里。這篇文章由Nuttens Claude負責轉換成ipython notebook 。

6. 用python把list里的數據寫入csv

result=[(u'appleiOS',u'appleiOS',u'$400'),
(u'likenew',u'5',u'$149'),
(u'appleiOS',u'appleiOS',u'$900'),
(u'excellent',u'6Plus',u'$550'),
(u'likenew',u'appleiOS',u'$279'),
(u'likenew',u'4',u'$59')]
withopen('data.csv','wb')asf:
foriteminresult:
line=','.join(item)+' '
f.write(line.encode('utf-8'))

7. Excel用Python讀取清洗後怎麼寫入數據

導入xlrd庫。
要導入xlrd庫,它是讀取excel中數據的庫,解壓所下載的壓縮包,用cmd命令行CD到解壓目錄,執行pythonsetup.pyinstall命令,要導入xlwt庫,它是開發人員用於生成與MicrosoftExcel版本95到2003兼容的電子表格文件的庫。接著用cmd命令行切換到下載文件所解壓的目錄,輸入pythonsetup.pyinstall命令,如無意外則安裝成功。
openpyxl是用於讀取和寫入Excel2010xlsx/xlsm/xltx/xltm文件的Python庫。

熱點內容
編譯器分析 發布:2024-11-26 21:13:01 瀏覽:831
存儲過程execute 發布:2024-11-26 21:11:02 瀏覽:255
石器時代合成腳本 發布:2024-11-26 20:57:07 瀏覽:939
漏油器密碼怎麼改密碼 發布:2024-11-26 20:30:11 瀏覽:14
linux編碼命令 發布:2024-11-26 20:23:13 瀏覽:801
密碼加密工具 發布:2024-11-26 20:23:06 瀏覽:692
如何破解加密的wifi 發布:2024-11-26 20:10:29 瀏覽:431
c腳本檢查 發布:2024-11-26 19:56:34 瀏覽:394
伺服器ip控制系統叫什麼 發布:2024-11-26 19:56:31 瀏覽:747
ecshop文件夾許可權 發布:2024-11-26 19:55:05 瀏覽:74