前提・実現したいこと
jupyterの拡張機能を入れたvscodeでデータ分析の練習をしていたところ問題が発生しました。
下記のサイトのデータの準備段階でcsvの中身がうまく表示されません。
https://yyhhyy.hatenablog.com/entry/2019/07/07/230000
UnnamedやNoNとなってしまっているので、正しい値が出力されるようにしたいです。
ご教授お願い致します。
発生している問題・エラーメッセージ
以下はvocode上に出力された結果です。
" Unnamed: 1 Unnamed: 2 Unnamed: 3 Unnamed: 4 Unnamed: 5 Unnamed: 6
0 NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ...
283 NaN NaN NaN NaN NaN NaN NaN
284 NaN NaN NaN NaN NaN NaN NaN
285 NaN NaN NaN NaN NaN NaN NaN
286 NaN NaN NaN NaN NaN NaN NaN
287 NaN NaN NaN NaN NaN NaN NaN
288 rows × 7 columns
元のcsvファイルの最終行が144行なのにもかかわらず、行数も大幅に違っています。
該当のソースコード
以下は上記のサイトのコードをほとんど流用したものです。
jupyterTest.ipynbがファイル名です。
Python
1dff = pd.read_csv("./data/SomervilleHappinessSurvey2015.csv", 2 encoding="cp932", 3 header=0) 4dff
以下は分析したいSomervilleHappinessSurvey2015.csvの中身です。
csv
1D,X1,X2,X3,X4,X5,X6 20,3,3,3,4,2,4 30,3,2,3,5,4,3 41,5,3,3,3,3,5 50,5,4,3,3,3,5 60,5,4,3,3,3,5 71,5,5,3,5,5,5 80,3,1,2,2,1,3 91,5,4,4,4,4,5 100,4,1,4,4,4,4 110,4,4,4,2,5,5 120,3,2,3,3,2,3 130,4,4,3,4,4,4 141,5,2,4,5,5,5 150,4,2,4,5,4,3 160,4,1,3,3,4,3 171,3,2,4,3,4,4 180,5,3,4,5,4,5 191,5,1,4,3,4,5 200,5,1,2,4,4,5 210,4,2,4,4,4,4 221,4,2,3,3,4,4 231,4,2,3,3,4,4 240,4,3,5,5,5,4 250,4,3,5,5,5,4 261,5,1,2,5,2,4 271,4,3,3,3,3,4 280,3,4,3,3,2,3 291,3,3,3,5,5,5 301,3,3,1,3,3,4 311,3,3,1,3,3,4 321,5,3,3,3,5,3 330,5,3,3,3,5,3 340,4,3,3,3,4,4 350,4,1,3,4,4,5 361,3,2,4,4,4,5 371,3,2,4,4,4,5 381,4,1,3,1,1,4 390,4,2,3,3,4,4 401,5,3,4,3,4,5 411,5,3,4,3,4,5 421,5,2,3,3,2,5 431,4,4,3,4,2,4 440,4,1,3,4,4,3 450,5,2,3,3,3,3 461,4,2,4,3,2,4 470,5,2,3,3,4,5 480,4,3,3,4,2,4 491,3,1,2,4,3,5 501,5,3,4,4,4,5 511,5,3,3,4,4,5 520,1,1,1,3,1,4 531,5,2,5,5,5,3 541,5,1,3,3,4,4 551,5,1,3,3,4,4 561,5,1,3,3,4,4 571,5,2,4,3,4,5 581,5,2,4,3,4,5 591,4,3,2,4,3,4 601,4,3,2,4,3,4 610,5,1,1,5,3,5 620,4,4,4,4,3,4 631,5,3,5,5,4,5 641,5,2,4,2,2,4 651,4,4,3,3,2,5 660,4,3,3,3,3,5 671,5,2,4,4,5,5 681,5,2,4,4,5,5 690,5,5,5,2,5,5 701,4,1,3,4,4,4 711,4,1,3,4,4,4 720,3,3,3,5,4,3 730,4,1,1,3,4,4 741,5,1,5,5,5,5 751,5,4,5,5,5,5 761,4,2,2,4,4,5 771,4,3,3,4,3,4 780,3,4,3,4,1,4 790,4,5,5,5,1,3 801,4,3,3,4,2,4 810,5,2,3,3,2,5 820,5,3,3,4,3,3 831,5,2,5,5,5,5 840,3,2,3,3,4,4 850,4,3,2,3,2,4 861,5,2,3,5,5,5 870,5,3,3,3,2,5 881,5,5,5,5,5,5 891,4,3,2,4,4,4 900,3,3,3,3,3,4 911,4,2,4,4,4,4 921,5,3,2,4,4,4 930,4,3,4,4,2,4 941,5,2,3,4,4,5 951,5,3,3,3,5,5 960,4,1,3,4,4,3 971,5,2,4,5,4,5 980,5,4,2,4,3,5 990,3,3,1,3,2,3 1000,3,4,5,4,5,4 1011,5,1,3,4,5,5 1021,5,4,5,5,5,4 1031,5,5,3,4,4,5 1041,5,4,4,3,3,4 1051,5,4,4,4,4,5 1060,3,1,3,2,1,2 1071,5,5,5,5,5,5 1080,4,4,3,4,3,3 1091,5,4,5,4,5,4 1101,4,2,3,4,3,3 1110,3,3,2,4,4,4 1121,5,2,2,4,5,5 1131,5,3,2,4,4,5 1140,3,1,2,3,3,1 1151,5,3,4,3,4,3 1160,5,2,3,3,3,5 1171,4,3,4,4,3,4 1180,3,2,2,3,3,3 1190,4,1,3,5,3,5 1201,5,1,4,3,5,5 1210,4,1,3,2,4,4 1221,5,1,5,3,5,5 1230,4,2,4,4,4,4 1240,5,2,4,4,5,5 1251,5,3,4,4,4,4 1261,5,2,4,4,2,3 1270,5,3,3,4,4,5 1280,5,3,3,4,4,4 1290,3,2,3,3,5,4 1300,4,1,3,3,3,4 1310,5,1,4,4,4,5 1320,5,2,2,4,4,5 1330,5,3,5,4,5,5 1341,3,4,4,5,1,3 1351,5,1,5,5,5,5 1361,4,3,3,4,4,4 1371,5,5,1,1,5,1 1380,4,4,4,4,1,3 1391,5,2,3,4,4,3 1400,5,3,3,1,3,5 1411,5,2,3,4,2,5 1421,5,3,3,4,4,5 1430,4,3,3,4,4,5 1440,5,3,2,5,5,5
試したこと
元データをカンマ区切りではなくセルに1つずつデータを入力させることを試しました。
以下はtest.csvです。
csv
1D x1 x2 x3 x4 x5 x6 20 1 1 1 1 1 1 31 2 2 2 2 2 2 41 2 2 2 2 2 2 51 2 2 2 2 2 2 61 2 2 2 2 2 2 71 2 2 2 2 2 2 81 2 2 2 2 2 2 91 2 2 2 2 2 2 101 2 2 2 2 2 2
以下はtest.csvを分析しvscode上に出力させた結果で、正しい結果が出力できました。
Python
1df = pd.read_csv("data/test.csv") 2df
D x1 x2 x3 x4 x5 x6
0 0 1 1 1 1 1 1
1 1 2 2 2 2 2 2
2 1 2 2 2 2 2 2
3 1 2 2 2 2 2 2
4 1 2 2 2 2 2 2
5 1 2 2 2 2 2 2
6 1 2 2 2 2 2 2
7 1 2 2 2 2 2 2
8 1 2 2 2 2 2 2
補足情報(FW/ツールのバージョンなど)
venvで作った仮想環境上に以下の環境を構築しています。
Python3.8.5
pandas1.1.0
numpy1.19.1
jupyter1.0.0
###8/28追記情報
別途作成した以下のカンマ区切りのtest.csvを読み込んだところvscode上で正しく出力されました。
csv
1D,X1,X2 21,2,3 34,5,6
Python
1dff = pd.read_csv("./data/test.csv", 2 header=0) 3dff
D,X1,X2
0 1,2,3
1 4,5,6
また、問題のcsvファイルをコピーして中身を少し変え、拡張子をtxtに変更したもの(SomervilleHappinessSurvey2015_2.txt)
txt
1"x1,x2" 2"0,1" 3"2,3" 4"4,5"
こちらを読み込んだところ、以下のように出力されました。
Python
1f = open("./data/SomervilleHappinessSurvey2015_2.txt") 2print(f.read())
"x1,x2"
"0,1"
"2,3"
"4,5"
やはり□□の文字化けが存在しており、これが問題個所だと考えられますが、拡張子を変えた後のtxtファイルの中身は見た目上は問題ないように思われます。
回答1件
あなたの回答
tips
プレビュー