استخدام بايثون لاستبدال MATLAB:كيفية استيراد البيانات؟

StackOverflow https://stackoverflow.com/questions/1057666

  •  21-08-2019
  •  | 
  •  

سؤال

أريد استخدام بعض مكتبات بايثون لتحل محل MATLAB.كيف يمكنني استيراد بيانات Excel في Python (على سبيل المثال باستخدام NumPy) لاستخدامها؟

لا أعرف ما إذا كانت Python بديلاً موثوقًا لـ MATLAB، لكني أريد تجربتها.هل هناك برنامج تعليمي؟

هل كانت مفيدة؟

المحلول

واعتمادا على أي نوع من الحسابات تقومون به مع MATLAB (والتي كنت أدوات العمل تستخدم)، يمكن أن بيثون أن يكون بديلا جيدا لMATLAB.

نمباي + <لأ href = "HTTP: //en.wikipedia. غزاله / ويكي / SciPy "يختلط =" نوفولو noreferrer "> SciPy + Matplotlib والحق في الجمع بين لبدء.

لالبيانات، يمكنك، على سبيل المثال، حفظ البيانات الخاصة بك مباشرة في ملف نصي (على افتراض انك لا معنية مباشرة بقضايا الدقة الفاصلة العائمة) وقراءته في <لأ href = "HTTP: // داخلي. wikipedia.org/wiki/Python_٪28programming_language٪29 "يختلط =" نوفولو noreferrer "> بيثون .

إذا البيانات الخاصة بك بيانات Excel ، حيث يتم فصل كل قيمة من قبل "." يمكنك على سبيل المثال قراءة خط ملف سطرا، واستخدام الأسلوب انقسام () (مع "،" كما الحجة). للحصول على كل قيمة

لMATLAB يصل إلى الإصدار 7.1، فمن الممكن لتحميل مباشرة .mat الملفات من بيثون مع في scipy.io.matlab.mio حدة.

نصائح أخرى

وهناك Matplotlib للحصول على المؤامرات وفي CSV حدة للحصول على قراءة <لأ href =" http://en.wikipedia.org/wiki/Microsoft_Excel "يختلط =" نوفولو noreferrer " > بيانات Excel (على افتراض يمكنك تفريغ ل CSV ).

إليك تعليمي حول استبدال MATLAB مع بيثون.

إذا كنت قادما من MATLAB العالم، <وأ href = "HTTP: // www.scipy.org/PyLab "يختلط =" نوفولو noreferrer "> Pylab وتسهيل عملية الانتقال. وبمجرد الانتهاء من تحويل البيانات إلى ASCII، سوف pylab.load() تفعل بقية:

pylab.load(fname, comments='#', delimiter=None, converters=None, 
           skiprows=0, usecols=None, unpack=False, 
           dtype=<type 'numpy.float64'>)

وربما يكون هناك مئات الطرق التي يمكن استيراد البيانات النص في بيثون.

ولكن منذ كنت تريد استبدال MATLAB ، وأنت تسير تستخدم <أ href ل = "http://en.wikipedia.org/wiki/NumPy" يختلط = "نوفولو noreferrer"> نمباي وربما <لأ href = "http://en.wikipedia.org/wiki/SciPy" يختلط = "نوفولو noreferrer"> SciPy .

وإبقاء الأشياء بسيطة: استخدام نمباي القياسية النص التحميل:

import numpy
imported_array = numpy.loadtxt('file.txt',delimiter='\t')  # Assuming tab-delimiter
print imported_array.shape

والباندا هي مكتبة تحليل البيانات بيثون التي يمكن استيراد / تصدير من إكسل بسهولة جدا. وفيما يلي كيفية القيام بذلك:

http://pandas.pydata.org/pandas-docs/ مستقرة / 10min.html # تتفوق

وتحطم بالطبع:

import pandas as pd
data = pd.read_excel('foo.xlsx', 'Sheet1', index_col=None, na_values=['NA'])

وكان لي نظرة على mlabwrap كخطوة لتخفيف بعض <لأ href = "HTTP: / /en.wikipedia.org/wiki/MATLAB "يختلط =" نوفولو noreferrer "> MATLAB المطورين في استخدام بايثون أكثر.

ولكن لقد كنت غير قادر على بناء كما كان يتمنى، وأنا لا تشغيل إنتاج بتثبيت هنا، لذلك أنا ميت في الماء.

إذا حفظت البيانات في شكل MATLAB أو الاستخدام:

from scipy.io import loadmat

datafile = "yourfile.mat"
data = loadmat(datafile, matlab_compatible=True)
var1 = data['nameOfYourVariable'].squeeze()
var2 = data['nameOfYourOtherVariable'].squeeze()

"لا أعرف ما إذا كانت بايثون بديلاً موثوقًا لـ MATLAB"

بالنسبة لي (الفيزياء التجريبية) فإن بايثون ليست مجرد بديل كامل لـ ماتلاب (عندما تشمل سكيبي و ماتبلوتليب كما هو مذكور أعلاه)، ولكنه مفيد لأشياء كثيرة بخلاف معالجة البيانات وتصورها (مثل احتياجات البرمجة العامة).

"سأحاول تجربة SAGE."

ومن الجدير بالذكر أن هناك بضعة خوادم قيد التشغيل حكيم التي توفر بيئة الكمبيوتر المحمول (راجع جرب سيج على الإنترنت في http://www.sagemath.org/).يعد هذا أمرًا رائعًا نظرًا لحقيقة أن كل ما تحتاجه هو متصفح إنترنت والوصول إليه (لا يتطلب التثبيت).

بالنسبة للسؤال كما فسره Kevin Buchs (في إجابة أخرى)، يمكن قراءة Excel إلى Python بعدة طرق، بعضها يعتمد على النظام الأساسي (OS):

  1. مورد لطيف (منصة مستقلة) - http://www.python-excel.org/
  2. مثال باستخدام xlrd الذي وجدته مفيدًا ذات مرة (وهذا هو ما استخدمته عندما كنت في حاجة إليه): http://code.activestate.com/recipes/483742/ للحصول على مثال يعتمد على xlrd (مستقل عن النظام الأساسي)
  3. com.pyexcelerator هو خيار آخر.

آمل أن يساعد هذا.إذا لم يكن الأمر كذلك، فيمكنني محاولة ترتيب بعض أمثلة التعليمات البرمجية بنفسي (على الرغم من أن عمر الرموز الموجودة لدي يزيد عن ستة أعوام...).أنا شخصياً أفضل، كما هو مقترح في الإجابات الأخرى، استخدام تنسيق CSV أو ASCII.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top