Ravindra BagaleCourses & study guides English Track your progress

Power Query मधला DataFormat.Error We Couldn't Convert to Number कसा fix करायचा

तुम्ही price column number करता आणि काही cells मध्ये Error हा शब्द येतो. एकावर click केलं की Power Query सांगतो: DataFormat.Error: We couldn't convert to Number. बरेच जण मग type परत बदलून बघतात, किंवा errors filter करून टाकतात, आणि चांगले orders घालवतात. या chapter मध्ये आपण बघणार की नक्की कोणत्या value मुळे error आला, कोणत्या step ने तो बनवला, आणि एकही row न घालवता तो बरोबर क्रमाने कसा fix करायचा.

या chapter मध्ये काय शिकणार

  • DataFormat.Error म्हणजे काय
  • Error details वाचणं (Details: NA)
  • Applied Steps ने प्रत्येक step चा data बघणं
  • Error बनवणारा step शोधणं
  • Changed Type step safely delete करणं
  • आधी replace, मग type
  • Column quality ने errors मोजणं

Practice files: blinkit-orders-small-raw.csv (12 rows) आणि blinkit-orders-raw.csv (315 rows). Power BI Power Query मध्ये messy sales data clean कसा करायचा मधल्याच काल्पनिक files.

काल्पनिक data: orders, products आणि stores practice साठी बनवलेले आहेत, Maharashtra मधल्या Blinkit सारख्या export ची नक्कल. Amounts ₹ मध्ये.

1. Problem काय आहे

Title row काढला, headers लावले, blank आणि duplicate order IDs काढले; छोट्या file मध्ये 7 orders उरले. आता price चा type icon click करून Decimal Number निवडला. Column असा दिसतो:

order_id price
BLK1001 120
BLK1002 450
BLK1003 Error
BLK1005 120
BLK1006 999
BLK1008 450
BLK1009 90

BLK1003 या एका order ला error आहे. असंच load केलं तर ती price जाते, आणि errors filter केले तर अख्खा order जातो.

2. सोप्या भाषेत idea

Data type म्हणजे एक promise: "या column मधली प्रत्येक value number आहे". Power Query हे promise cell by cell check करतो. 120 चा number होतो. "NA" चा होत नाही, कारण N आणि A अक्षरं आहेत. Power Query अंदाज लावत नाही; तो फक्त तो एक cell Error म्हणून mark करतो आणि पुढे जातो.

म्हणजे error type मध्ये नाही. तो steps च्या क्रमात आहे: promise मोडणारा text काढायच्या आधीच तुम्ही promise केलं.

Fix चा आकार नेहमी हाच:

  1. खूप लवकर promise करणारा step काढा.
  2. Text clean करा (NA ऐवजी null).
  3. Promise परत करा (type बदला).
price (text)price (Decimal Number)120120450450NAError1201209999994504509090DataFormat.Error: We couldn't convert to Number. Details: NAचित्र (काल्पनिक data)

Figure 1. Type बदलला की प्रत्येक cell convert होतो; "NA" हा text number होऊ शकत नाही, म्हणून तो cell Error होतो (चित्र).

3. Data

ID cleaning नंतर उरलेले 7 orders, price file मध्ये आहे तसा text:

order_id price (text) Number होईल का?
BLK1001 120 हो
BLK1002 450 हो
BLK1003 NA नाही
BLK1005 120 हो
BLK1006 999 हो
BLK1008 450 हो
BLK1009 90 हो

अंदाज लावा: price मध्ये किती Error cells येतील? (एक.) NA replace करण्याआधी revenue चा type बदलला तर किती? (एक: BLK1005.)

4. Step by step

Error वाचा

  1. BLK1003 cell मध्ये Error शब्दाच्या बाजूच्या रिकाम्या जागेवर click करा (शब्दावर नाही). Editor च्या खाली एक pane उघडतो.
  2. वाचा: DataFormat.Error: We couldn't convert to Number. Details: NA. "Details" म्हणजे fail झालेली value.

Error कुठे बनला ते शोधा

  1. उजवीकडे Applied Steps बघा. शेवटचा step Changed Type आहे (अनेक असतील तर Changed Type1, Changed Type2 असं नाव असू शकतं).
  2. त्याच्या अगदी वरच्या step वर click करा. Price परत text आहे आणि BLK1003 मध्ये NA दिसतो. हा type change च्या आधीचा data.
  3. दुसरी कोणती वाईट value नाही ना, हे बघायला price चा filter arrow उघडा आणि search box मध्ये NA टाका. List मध्ये NA दिसतो. काहीही न बदलता list बंद करा.

बरोबर क्रमाने fix करा

  1. Error बनवणाऱ्या Changed Type step च्या डावीकडच्या ✕ वर click करा. Step निघून जातो.
  2. List मधल्या शेवटच्या step वर परत click करा, म्हणजे तुम्ही शेवटी काम करता.
  3. price header वर right-click › Replace Values. Value To Find: NA. Replace With: रिकामं. Advanced options › Match entire cell contents tick करा. OK.
  4. आता price चा type Decimal Number करा. Power Query ने Change Column Type: Replace current / Add new step विचारलं तर Add new step निवडा.
  5. revenue साठी steps 8 आणि 9 करा.

Check करा

  1. View › Column quality tick करा. प्रत्येक header खाली Valid, Error आणि Empty चे percentages दिसतात.
आधी: type खूप लवकर बदललानंतर: आधी replace, मग typeSourceRemoved Top RowsPromoted HeadersFiltered RowsRemoved DuplicatesChanged Type ✗SourceRemoved Top RowsPromoted HeadersFiltered RowsRemoved DuplicatesReplaced ValueChanged Typeशेवटी price: Errorशेवटी price: null (error नाही)चित्र (काल्पनिक data)

Figure 2. Fix च्या आधी आणि नंतर Applied Steps: लवकर आलेला Changed Type step delete, Replaced Value आधी, type change त्याच्या नंतर (चित्र).

5. तुमचा result असा दिसला पाहिजे

order_id price revenue
BLK1001 120 240
BLK1002 450 450
BLK1003 null 270
BLK1005 120 null
BLK1006 999 999
BLK1008 450 900
BLK1009 90 450

price साठी Column quality: Valid 86%, Error 0%, Empty 14% (7 पैकी 6 valid आणि 1 null). Applied Steps च्या शेवटी price आणि revenue चे replace आणि type steps आहेत, प्रत्येक replace त्याच्या type change च्या वर (repeat नावांना Power Query numbers लावतो, जसं Replaced Value1). Rows अजून 7.

6. काय झालं

  • पहिल्या Changed Type ने clean होण्याआधीच "NA" ला number करायचा प्रयत्न केला, आणि त्या एका cell वर fail झाला.
  • Step delete केल्यावर column परत text झाला, आणि "NA" परत दिसायला लागला.
  • Replace Values ने "NA" ची रिकामी value केली.
  • नवीन type change ला convert न होणारं काहीच उरलं नाही: रिकामी value null झाली, आणि number column मध्ये null चालतो.

प्रत्येक step त्याच्या वरच्या step च्या result वर काम करतो. म्हणूनच steps इतकाच त्यांचा क्रमही महत्त्वाचा आहे.

Classroom line

Whenever we change the data type of a column, Power Query converts every single value in it.

7. अजून थोडं खोलात

  • जास्तीचा Changed Type कुठून येतो. Headers promote केले की Power Query बऱ्याचदा पहिल्या rows वरून types चा अंदाज लावून स्वतःचा Changed Type step टाकतो. खाली NA असलेल्या column साठी त्याने number type ठरवला, तर हाच error येतो. Fix तोच.
  • Formula bar मध्ये प्रत्येक step दिसतो. Step वर click करून formula bar वाचा (View › Formula Bar). Type change असा दिसतो: Table.TransformColumnTypes(#"Removed Duplicates",{{"price", type number}}). Brackets मधलं पहिलं नाव म्हणजे तो step ज्यावर काम करतो.
  • Replace Errors. Header वर right-click › Replace Errors ने Error cells मध्ये null टाकता येतो. चालतं, पण अनपेक्षित errors पण लपतात, जसं comma सकट टाइप केलेलं "1,200". आधी माहीत असलेला text fix करा; Replace Errors तपासून झालेल्या cases साठी ठेवा.
  • Keep Errors. Home › Keep Rows › Keep Errors ने select केलेल्या column मध्ये errors असलेलेच rows दिसतात. बघण्यासाठी वापरा, मग तो step delete करा.
  • हाच error आणणाऱ्या इतर values: "-", "n/a", "₹120", "120 rs", "1.2.3". Type change च्या आधी त्या replace किंवा extract करा.

8. नेहमीच्या चुका

चुकीचा result कारण उपाय
Type परत Text केला तरी Error cells राहतात नवीन Text step Error ला convert करतो, मूळ NA ला नाही; तिथे NA आधीच गेलेला असतो Error बनवणारा Changed Type step delete करा
7 ऐवजी 6 rows Remove Rows › Remove Errors ने errors काढले, त्यामुळे BLK1003 delete झाला तो step delete करा; type change च्या आधी NA replace करा
Replace Values ला काहीच सापडत नाही Changed Type step वर replace केलं, तोपर्यंत NA चा Error झाला होता आधी Changed Type step delete करा, मग replace
Average price ₹318.43 NA ऐवजी रिकामी value न टाकता 0 टाकला "Replace With" रिकामं ठेवा म्हणजे cell null होतो
Step delete केल्यावर पुढचे steps बिघडतात पुढच्या step ने delete झालेल्या step चं column नाव वापरलं होतं पुढचे steps check करा; सहसा फक्त type change असतो, म्हणून काही बिघडत नाही

Classroom line

First keep it as text and clean it; change the type after that.

Ravindra Bagale's Tip

Whenever you see Error in a column, do not touch the Error cell. Click the step above the type change and look at the real value there. Fix that value, then change the type again.

9. स्वतः practice करा

Practice task

blinkit-orders-raw.csv मध्ये title row काढून, headers लावून आणि order_id, product_id clean करून (274 rows):

  1. कोणताही replace न करता price Decimal Number करा. Price मध्ये किती Error cells?
  2. revenue साठी तेच करा. किती Error cells, आणि किती nulls?
  3. दोन्ही columns बरोबर क्रमाने fix करा. Column quality मध्ये Error किती?

Hints: रिकामे cells error आणत नाहीत; फक्त text आणतो. मोजायला Keep Errors वापरा, मग तो step delete करा.

Solution बघा
  1. price: 18 Error cells (18 NA values).
  2. revenue: 14 Error cells (NA values) आणि 8 nulls (रिकामे cells, जे error न येता null होतात).
  3. लवकर आलेले Changed Type steps delete करून, NA रिकाम्या value ने replace करून आणि types परत बदलून: दोन्ही columns मध्ये Error 0%. price मध्ये 18 nulls, revenue मध्ये 22 nulls, आणि table मध्ये अजून 274 rows.

10. Professional सारखा विचार करा

  • Business view. Report मधला error cell म्हणजे शांतपणे चुकलेला आकडा. Null म्हणजे प्रामाणिक "माहीत नाही". Source file च्या owners ना nulls चा count कळवा.
  • Performance. प्रत्येक step नंतर type change करण्यापेक्षा cleaning च्या शेवटी एकदाच करा. कमी steps वाचायला सोपे आणि refresh थोडा fast.
  • Maintenance. Steps rename करा (Replaced NA in price, Set types). पुढच्या महिन्याची file "-" सारखी नवीन वाईट value आणेल, तेव्हा error ज्या step वर येईल त्याचं नावच सांगेल कुठे बघायचं.
  • Refresh safety. Build करताना Column quality आणि Column profile (View tab) चालू ठेवा. File छोटी असेल तर editor च्या खाली Column profiling based on entire data set निवडा, कारण default फक्त पहिल्या 1,000 rows बघतो.

Interview questions

  1. "DataFormat.Error: We couldn't convert to Number" म्हणजे काय? Column मधली एक value (Details मध्ये दिसणारी) type conversion number म्हणून वाचू शकत नाही.
  2. कोणत्या step ने error आला ते कसं शोधता? Applied Steps मध्ये खालून वर steps click करा; error दाखवणारा पहिला step, सहसा Changed Type.
  3. Remove Errors का नाही वापरायचं? ते अख्खे rows delete करतं, त्यामुळे त्या order च्या इतर columns मधला चांगला data जातो.
  4. बरोबर क्रम कोणता? आधी text values clean करा, मग data type बदला.

Recap

थोडक्यात

  1. DataFormat.Error म्हणजे एक value (Details मध्ये दिसणारी) number होऊ शकत नाही.
  2. Applied Steps मध्ये step वर click केलं की त्या क्षणाचा data दिसतो.
  3. खूप लवकर चाललेला Changed Type step delete करा.
  4. NA रिकाम्या value ने replace करा, मग type बदला: तो null होतो.
  5. Error rows कधीच काढू नका: अख्खे orders जातात.

या lesson साठी Ravi Sir's Cards

English cards