मैं पांडा का उपयोग कर एक पुस्तकालय पर काम कर रहा हूँ। पुस्तकालय की लिपि विकसित करने के लिए, मैंने एक मूल लिपि बनाई जो वांछित के रूप में काम करती है। फिर, मैंने इस कोड को लाइब्रेरी फ़ोल्डर में एक .py फ़ाइल में कॉपी किया और पांडा लोड करते समय मुझे हमेशा निम्न त्रुटि संदेश मिलता है:

Traceback (most recent call last):
  File "D:/My/Path/Python Perfectionnement/analysis/csv.py", line 4, in <module>
    import pandas as pd
  File "C:\Users\Me\AppData\Local\Continuum\anaconda3\envs\pyperf\lib\site-packages\pandas\__init__.py", line 145, in <module>
    from pandas.io.api import (
  File "C:\Users\Me\AppData\Local\Continuum\anaconda3\envs\pyperf\lib\site-packages\pandas\io\api.py", line 8, in <module>
    from pandas.io.excel import ExcelFile, ExcelWriter, read_excel
  File "C:\Users\Me\AppData\Local\Continuum\anaconda3\envs\pyperf\lib\site-packages\pandas\io\excel\__init__.py", line 1, in <module>
    from pandas.io.excel._base import ExcelFile, ExcelWriter, read_excel
  File "C:\Users\Me\AppData\Local\Continuum\anaconda3\envs\pyperf\lib\site-packages\pandas\io\excel\_base.py", line 9, in <module>
    from pandas._libs.parsers import STR_NA_VALUES
  File "pandas\_libs\parsers.pyx", line 12, in init pandas._libs.parsers
ImportError: cannot import name QUOTE_MINIMAL

Process finished with exit code 1

यहाँ मॉड्यूल का कोड है:

#! /usr/bin/env python3
# coding: utf-8

import os
import pprint
import logging as lg

import pandas as pd
import matplotlib
matplotlib.use('TkAgg') # you need this if you are on MacOS
import matplotlib.pyplot as plt
import numpy as np

class SetOfParliamentMember:
    def __init__(self, name):
        self.name = name

    def data_from_csv(self, csv_file):
        lg.info("Opening data file {}".format(csv_file))
        self.dataframe = pd.read_csv(csv_file, sep=";")

    def data_from_dataframe(self, dataframe):
        self.dataframe = dataframe

    def display_chart(self):
        data = self.dataframe
        female_mps = data[data.sexe == "F"]
        male_mps = data[data.sexe == "H"]

        counts = [len(female_mps), len(male_mps)]
        counts = np.array(counts)
        nb_mps = counts.sum()
        proportions = counts / nb_mps

        labels = ["Female ({})".format(counts[0]), "Male ({})".format(counts[1])]

        fig, ax = plt.subplots()
        ax.axis("equal")
        ax.pie(
                proportions,
                labels=labels,
                autopct="%1.1f%%"
                )
        plt.title("{} ({} MPs)".format(self.name, nb_mps))
        plt.show()

    def split_by_political_party(self):
        result = {}
        data = self.dataframe

        # These 2 syntaxes are equivalent : data.parti_ratt_financier and data['parti_ratt_financier']
        all_parties = data["parti_ratt_financier"].dropna().unique()

        for party in all_parties:
            data_subset = data[data.parti_ratt_financier == party]
            subset = SetOfParliamentMember('MPs from party "{}"'.format(party))
            subset.data_from_dataframe(data_subset)
            result[party] = subset

        return result

    def __str__(self):
        names = [] ## todo: remplacer a la fin par une comprehension
        for row_index, mp in self.dataframe.iterrows(): ##todo: ici il y a du packing/unpacking
            names += [mp.nom]
        return str(names) # Python knows how to convert a list into a string

    def __repr__(self):
        return "SetOfParliamentMember: {} members".format(len(self.dataframe))

    def __len__(self):
        return self.number_of_mps

    def __contains__(self, mp_name):
        return mp_name in self.dataframe["nom"].values

    def __getitem__(self, index):
        try:
            result = dict(self.dataframe.iloc[index])
        except:
            if index < 0:
                raise Exception("Please select a positive index")
            elif index >= len(self.dataframe):
                raise Exception("There are only {} MPs!".format(len(self.dataframe)))
            else:
                raise Exception("Wrong index")
        return result

    def __add__(self, other):
        if not isinstance(other, SetOfParliamentMember):
            raise Exception("Can not add a SetOfParliamentMember with an object of type {}".format(type(other)))

        df1, df2 = self.dataframe, other.dataframe ##todo: ici il y a du packing/unpacking
        df = df1.append(df2)
        df = df.drop_duplicates()

        s = SetOfParliamentMember("{} - {}".format(self.name, other.name))
        s.data_from_dataframe(df)
        return s

    def __radd__(self, other): ## todo: l'implementation de cette methode ne suit a mon avis pas les bonnes pratiques
        return self

    def __lt__(self, other):
        return self.number_of_mps < other.number_of_mps

    def __gt__(self, other):
        return self.number_of_mps > other.number_of_mps

    # The following 2 methods are a way to simulate a calculated attribute
    # (attribute 'number_of_mps' is calculated from attribute 'seld.dataframe')
    # There is a much better way to do it, using decorator '@property'
    def __getattr__(self, attr):
        if attr == "number_of_mps": ##todo: faire la version avec @property
            return len(self.dataframe)

    def __setattr__(self, attr, value):
        if attr == "number_of_mps":
            raise Exception("You can not set the number of MPs!")
        self.__dict__[attr] = value ## todo: c'est l'occasion de parler de __dict__ dans le cours ;)

def launch_analysis(data_file,
                    by_party = False, info = False, displaynames = False,
                    searchname = None, index = None, groupfirst = None):

    sopm = SetOfParliamentMember("All MPs")
    sopm.data_from_csv(os.path.join("data",data_file))
    sopm.display_chart()

    if by_party:
        for party, s in sopm.split_by_political_party().items():
            s.display_chart()

    if info:
        print()
        print(repr(sopm))

    if displaynames:
        print()
        print(sopm)

    if searchname != None:
        is_present = searchname in sopm
        print()
        print("Testing if {} is present: {}".format(searchname, is_present))

    if index is not None:
        index = int(index)
        print()
        pprint.pprint(sopm[index]) # prints the dict a nice way

    if groupfirst is not None:
        groupfirst = int(groupfirst)
        parties = sopm.split_by_political_party()
        parties = parties.values()
        parties_by_size = sorted(parties, reverse = True)

        print()
        print("Info: the {} biggest groups are :".format(groupfirst))
        for p in parties_by_size[0:groupfirst]:
            print(p.name)

        s = sum(parties_by_size[0:groupfirst])

        s.display_chart()

if __name__ == "__main__":
    launch_analysis('current_mps.csv')

स्क्रिप्ट जो काम करती है और मॉड्यूल फ़ोल्डर एक ही वातावरण का उपयोग करते हैं।

आपकी सहायता के लिए धन्यवाद!! (<-- मुझे पता है कि अंतिम वाक्य सेंसर किया जाएगा, लेकिन मैं सिर्फ विनम्र हूं, तुम्हें पता है... कि शिक्षा क्या कहा जाता है...)

3
Yvanou 29 मार्च 2020, 13:04
आपको कोड शामिल करना होगा
 – 
DrBwts
29 मार्च 2020, 13:07
हाय, हो गया।
 – 
Yvanou
29 मार्च 2020, 13:24

4 जवाब

मैं एक ही परियोजना के साथ सीख रहा हूँ और एक ही मुद्दा था। पुराने पांडा संस्करण को स्थापित करके इसे हल किया:

pip install pandas==0.25.3

और फ़ाइल का नाम बदलकर "csv.py" करें। यदि नहीं किया जाता है, तो 'pd के रूप में पांडा आयात करें' मॉड्यूल "csv" के रूप में 'csv.py' का दुरुपयोग करता है।

आशा है कि इससे सहायता मिलेगी

5
Julien 6 अप्रैल 2020, 20:28

कृपया सुनिश्चित करें कि आपने वह मॉड्यूल स्थापित किया है जिसे आप ढूंढ रहे हैं।

-1
Technical A.D. 29 मार्च 2020, 13:12
नमस्ते, मॉड्यूल पांडा स्थापित है। जैसा कि मैंने कहा, अन्य स्क्रिप्ट पांडा का उपयोग करती हैं और जब तक वे पुस्तकालय निर्देशिका में नहीं हैं तब तक ठीक काम करती हैं
 – 
Yvanou
29 मार्च 2020, 13:21

मुझे वही त्रुटि मिली, मैंने उस निर्देशिका को बदल दिया जहां मेरा कोड सहेजा गया था (डेस्कटॉप आज़माएं) और यह काम कर गया, फिर भी यह पता नहीं लगा कि मुझे वह त्रुटि क्यों मिली।

0
Pranjal 31 मार्च 2020, 18:29

उन लोगों के लिए जिन्हें त्रुटि की समस्या है: cannot import name QUOTE_MINIMAL सुनिश्चित करें कि आपके पास "csv" नाम की कोई फ़ाइल या फ़ोल्डर नहीं है। यह पांडा मॉड्यूल के साथ एक नाम टकराव की समस्या पैदा करता है।

11
Daniel Montecillo 9 जून 2020, 01:57
धन्यवाद! मेरे साथ यही हो रहा था, csv.py का नाम बदलकर उसके अलावा और कुछ कर दिया और समस्या गायब हो गई!
 – 
Wen Zul
10 जून 2020, 13:32
यह ज्यादातर वास्तविक समस्या है जिसे त्रुटि फेंक दी जाती है।
 – 
Sajib Acharya
12 जुलाई 2020, 20:37