pandas                
            पंडों IO उपकरण (डेटा सेट को पढ़ना और सहेजना)
        
        
            
    खोज…
टिप्पणियों
पांडा के आधिकारिक दस्तावेज में IO Tools पर एक पेज शामिल है जिसमें फाइलों को पढ़ने और लिखने के लिए प्रासंगिक कार्यों की एक सूची है, साथ ही साथ कुछ उदाहरण और सामान्य पैरामीटर भी हैं।
DataFrame में csv फाइल पढ़ना
 फ़ाइल data_file.csv पढ़ने के लिए उदाहरण: 
फ़ाइल:
index,header1,header2,header3
1,str_data,12,1.4
3,str_data,22,42.33
4,str_data,2,3.44
2,str_data,43,43.34
7, str_data, 25, 23.32
कोड:
pd.read_csv('data_file.csv')
आउटपुट:
   index    header1  header2  header3
0      1   str_data       12     1.40
1      3   str_data       22    42.33
2      4   str_data        2     3.44
3      2   str_data       43    43.34
4      7   str_data       25    23.32
कुछ उपयोगी तर्क:
- sepडिफ़ॉल्ट फ़ील्ड सीमांकक एक अल्पविराम है- ,उदाहरण के लिए, यदि आपको- pd.read_csv('data_file.csv', sep=';')लिए किसी भिन्न सीमांकक की आवश्यकता हो तो इस विकल्प का उपयोग करें- pd.read_csv('data_file.csv', sep=';')
- index_colसाथ- index_col = n(- nएक पूर्णांक) आप उपयोग स्तंभ के लिए पांडा बता- nसूचकांक को DataFrame। उपरोक्त उदाहरण में:- pd.read_csv('data_file.csv', index_col=0)- आउटपुट: - header1 header2 header3 index 1 str_data 12 1.40 3 str_data 22 42.33 4 str_data 2 3.44 2 str_data 43 43.34 7 str_data 25 23.32
- skip_blank_linesडिफ़ॉल्ट रूप से रिक्त लाइनें छोड़ दी जाती हैं। रिक्त लाइनों को शामिल करने के लिए- skip_blank_lines=Falseका उपयोग करें (वे- NaNमूल्यों से भरे होंगे)- pd.read_csv('data_file.csv', index_col=0,skip_blank_lines=False)- आउटपुट: - header1 header2 header3 index 1 str_data 12 1.40 3 str_data 22 42.33 4 str_data 2 3.44 2 str_data 43 43.34 NaN NaN NaN NaN 7 str_data 25 23.32
- parse_datesदिनांक डेटा पार्स करने के लिए इस विकल्प का उपयोग करें।- फ़ाइल: - date_begin;date_end;header3;header4;header5 1/1/2017;1/10/2017;str_data;1001;123,45 2/1/2017;2/10/2017;str_data;1001;67,89 3/1/2017;3/10/2017;str_data;1001;0- कॉलम - 0और- 1को दिनांक के रूप में पार्स करने के लिए कोड:- pd.read_csv('f.csv', sep=';', parse_dates=[0,1])- आउटपुट: - date_begin date_end header3 header4 header5 0 2017-01-01 2017-01-10 str_data 1001 123,45 1 2017-02-01 2017-02-10 str_data 1001 67,89 2 2017-03-01 2017-03-10 str_data 1001 0- डिफ़ॉल्ट रूप से, दिनांक स्वरूप का अनुमान है। यदि आप एक दिनांक प्रारूप निर्दिष्ट करना चाहते हैं जिसका आप उदाहरण के लिए उपयोग कर सकते हैं - dateparse = lambda x: pd.datetime.strptime(x, '%d/%m/%Y') pd.read_csv('f.csv', sep=';',parse_dates=[0,1],date_parser=dateparse)- आउटपुट: - date_begin date_end header3 header4 header5 0 2017-01-01 2017-10-01 str_data 1001 123,45 1 2017-01-02 2017-10-02 str_data 1001 67,89 2 2017-01-03 2017-10-03 str_data 1001 0
फ़ंक्शन के मापदंडों पर अधिक जानकारी आधिकारिक दस्तावेज में पाई जा सकती है।
एक सीएसवी फ़ाइल के लिए बुनियादी बचत
raw_data = {'first_name': ['John', 'Jane', 'Jim'],
            'last_name': ['Doe', 'Smith', 'Jones'],
            'department': ['Accounting', 'Sales', 'Engineering'],}
df = pd.DataFrame(raw_data,columns=raw_data.keys())
df.to_csv('data_file.csv')
सीएसवी से पढ़ते समय पार्सिंग तिथियां
आप एक कॉलम निर्दिष्ट कर सकते हैं जिसमें दिनांक शामिल हैं ताकि सीएसवी से पढ़ते समय पांडा स्वचालित रूप से उन्हें पार्स कर देंगे
pandas.read_csv('data_file.csv', parse_dates=['date_column'])
DataFrames की हुकुम के लिए स्प्रेडशीट
with pd.ExcelFile('path_to_file.xls) as xl:
    d = {sheet_name: xl.parse(sheet_name) for sheet_name in xl.sheet_names}
        एक विशिष्ट पत्रक पढ़ें
pd.read_excel('path_to_file.xls', sheetname='Sheet1')
  वहाँ के लिए कई विकल्प हैं पार्स read_excel (में विकल्प के समान read_csv । 
pd.read_excel('path_to_file.xls',
              sheetname='Sheet1', header=[0, 1, 2],
              skiprows=3, index_col=0)  # etc.
        परीक्षण पठन_संपर्क
import pandas as pd
import io
temp=u"""index; header1; header2; header3
1; str_data; 12; 1.4
3; str_data; 22; 42.33
4; str_data; 2; 3.44
2; str_data; 43; 43.34
7; str_data; 25; 23.32"""
#after testing replace io.StringIO(temp) to filename
df = pd.read_csv(io.StringIO(temp),  
                 sep = ';', 
                 index_col = 0,
                 skip_blank_lines = True)
print (df)
         header1   header2   header3
index                               
1       str_data        12      1.40
3       str_data        22     42.33
4       str_data         2      3.44
2       str_data        43     43.34
7       str_data        25     23.32
सूची की समझ
 सभी फाइलें फोल्डर files । सबसे पहले DataFrames की सूची बनाने और उसके बाद concat उन्हें: 
import pandas as pd
import glob
#a.csv
#a,b
#1,2
#5,8
#b.csv
#a,b
#9,6
#6,4
#c.csv
#a,b
#4,3
#7,0
files = glob.glob('files/*.csv')
dfs = [pd.read_csv(fp) for fp in files]
#duplicated index inherited from each Dataframe
df = pd.concat(dfs)
print (df)
   a  b
0  1  2
1  5  8
0  9  6
1  6  4
0  4  3
1  7  0
#'reseting' index
df = pd.concat(dfs, ignore_index=True)
print (df)
   a  b
0  1  2
1  5  8
2  9  6
3  6  4
4  4  3
5  7  0
#concat by columns
df1 = pd.concat(dfs, axis=1)
print (df1)
   a  b  a  b  a  b
0  1  2  9  6  4  3
1  5  8  6  4  7  0
#reset column names
df1 = pd.concat(dfs, axis=1, ignore_index=True)
print (df1)
   0  1  2  3  4  5
0  1  2  9  6  4  3
1  5  8  6  4  7  0
चंक्स में पढ़ें
import pandas as pd    
chunksize = [n]
for chunk in pd.read_csv(filename, chunksize=chunksize):
    process(chunk)
    delete(chunk)
CSV फ़ाइल में सहेजें
डिफ़ॉल्ट मापदंडों के साथ सहेजें:
df.to_csv(file_name)
विशिष्ट कॉलम लिखें:
df.to_csv(file_name, columns =['col'])
डीफ़ॉल्टॉल्ट सीमांकक ',' - इसे बदलना है:
df.to_csv(file_name,sep="|")
हेडर के बिना लिखें:
df.to_csv(file_name, header=False)
दिए गए हेडर के साथ लिखें:
df.to_csv(file_name, header = ['A','B','C',...]
एक विशिष्ट एन्कोडिंग का उपयोग करने के लिए (जैसे 'utf-8') एन्कोडिंग तर्क का उपयोग करें:
df.to_csv (file_name, एन्कोडिंग = 'utf-8')
Read_csv के साथ दिनांक स्तंभों को पार्स करना
दिनांक में हमेशा एक अलग प्रारूप होता है, उन्हें एक विशिष्ट parse_dates फ़ंक्शन का उपयोग करके पार्स किया जा सकता है।
यह इनपुट .csv :
2016 06 10 20:30:00 foo 2016 07 11 19:45:30 bar 2013 10 12 4:30:00 foo
इस तरह पार्स किया जा सकता है:
mydateparser = lambda x: pd.datetime.strptime(x, "%Y %m %d %H:%M:%S")
df = pd.read_csv("file.csv", sep='\t', names=['date_column', 'other_column'], parse_dates=['date_column'], date_parser=mydateparser)
 parse_dates तर्क को पार्स किया जाने वाला स्तंभ है 
 date_parser पार्सर फ़ंक्शन है 
एक ही DF में कई CSV फ़ाइलों को (समान संरचना के साथ) पढ़ें और मर्ज करें
import os
import glob
import pandas as pd
def get_merged_csv(flist, **kwargs):
    return pd.concat([pd.read_csv(f, **kwargs) for f in flist], ignore_index=True)
path = 'C:/Users/csvfiles'
fmask = os.path.join(path, '*mask*.csv')
df = get_merged_csv(glob.glob(fmask), index_col=None, usecols=['col1', 'col3'])
print(df.head())
 यदि आप CSV फ़ाइलों को क्षैतिज रूप से जोड़ना चाहते हैं (कॉलम जोड़ना), तो pd.concat() कॉल करते समय axis=1 उपयोग करें: 
def merged_csv_horizontally(flist, **kwargs):
    return pd.concat([pd.read_csv(f, **kwargs) for f in flist], axis=1)
हेडर पंक्ति नहीं होने पर पंडों के डेटा फ्रेम में cvs फ़ाइल पढ़ना
यदि फ़ाइल में शीर्ष लेख पंक्ति नहीं है,
फ़ाइल:
1;str_data;12;1.4
3;str_data;22;42.33
4;str_data;2;3.44
2;str_data;43;43.34
7; str_data; 25; 23.32
 आप कॉलम नाम प्रदान करने के लिए कीवर्ड names का उपयोग कर सकते हैं: 
df = pandas.read_csv('data_file.csv', sep=';', index_col=0,
                     skip_blank_lines=True, names=['a', 'b', 'c'])
df
Out: 
           a   b      c
1   str_data  12   1.40
3   str_data  22  42.33
4   str_data   2   3.44
2   str_data  43  43.34
7   str_data  25  23.32
HDFStore का उपयोग करना
import string
import numpy as np
import pandas as pd
विभिन्न dtypes के साथ नमूना DF उत्पन्न करें
df = pd.DataFrame({
     'int32':    np.random.randint(0, 10**6, 10),
     'int64':    np.random.randint(10**7, 10**9, 10).astype(np.int64)*10,
     'float':    np.random.rand(10),
     'string':   np.random.choice([c*10 for c in string.ascii_uppercase], 10),
     })
In [71]: df
Out[71]:
      float   int32       int64      string
0  0.649978  848354  5269162190  DDDDDDDDDD
1  0.346963  490266  6897476700  OOOOOOOOOO
2  0.035069  756373  6711566750  ZZZZZZZZZZ
3  0.066692  957474  9085243570  FFFFFFFFFF
4  0.679182  665894  3750794810  MMMMMMMMMM
5  0.861914  630527  6567684430  TTTTTTTTTT
6  0.697691  825704  8005182860  FFFFFFFFFF
7  0.474501  942131  4099797720  QQQQQQQQQQ
8  0.645817  951055  8065980030  VVVVVVVVVV
9  0.083500  349709  7417288920  EEEEEEEEEE
एक बड़ा DF बनाओ (10 * 100.000 = 1.000.000 पंक्तियाँ)
df = pd.concat([df] * 10**5, ignore_index=True)
HDFStore फ़ाइल बनाएँ (या मौजूदा खोलें)
store = pd.HDFStore('d:/temp/example.h5')
 हमारे डेटा फ्रेम को h5 (HDFStore) फ़ाइल में सहेजें, अनुक्रमण [int32, int64, string] कॉलम: 
store.append('store_key', df, data_columns=['int32','int64','string'])
शो HDFStore विवरण
In [78]: store.get_storer('store_key').table
Out[78]:
/store_key/table (Table(10,)) ''
  description := {
  "index": Int64Col(shape=(), dflt=0, pos=0),
  "values_block_0": Float64Col(shape=(1,), dflt=0.0, pos=1),
  "int32": Int32Col(shape=(), dflt=0, pos=2),
  "int64": Int64Col(shape=(), dflt=0, pos=3),
  "string": StringCol(itemsize=10, shape=(), dflt=b'', pos=4)}
  byteorder := 'little'
  chunkshape := (1724,)
  autoindex := True
  colindexes := {
    "index": Index(6, medium, shuffle, zlib(1)).is_csi=False,
    "int32": Index(6, medium, shuffle, zlib(1)).is_csi=False,
    "string": Index(6, medium, shuffle, zlib(1)).is_csi=False,
    "int64": Index(6, medium, shuffle, zlib(1)).is_csi=False}
अनुक्रमित कॉलम दिखाएं
In [80]: store.get_storer('store_key').table.colindexes
Out[80]:
{
    "int32": Index(6, medium, shuffle, zlib(1)).is_csi=False,
    "index": Index(6, medium, shuffle, zlib(1)).is_csi=False,
    "string": Index(6, medium, shuffle, zlib(1)).is_csi=False,
    "int64": Index(6, medium, shuffle, zlib(1)).is_csi=False}
बंद (डिस्क को फ्लश) हमारी दुकान फ़ाइल
store.close()
पढ़ें नग्नेक्स एक्सेस लॉग (कई उद्धरण)
कई quotechars के लिए sep के स्थान पर regex का उपयोग करें:
df = pd.read_csv(log_file,
              sep=r'\s(?=(?:[^"]*"[^"]*")*[^"]*$)(?![^\[]*\])',
              engine='python',
              usecols=[0, 3, 4, 5, 6, 7, 8],
              names=['ip', 'time', 'request', 'status', 'size', 'referer', 'user_agent'],
              na_values='-',
              header=None
                )