Je veux traiter les actions comme un sujet d'apprentissage, mais je ne suis pas sûr de pouvoir l'analyser avec des données brutes. Par conséquent, je voudrais créer des données artificielles et les exécuter avec python. Je voudrais poursuivre dans le but d'apprendre le programme python.
Nous traitons les dates de négociation du 4 janvier 2016 au 8 novembre 2019. De plus, ces données sont
période | Tendance |
---|---|
2016 | Tendance à la baisse |
2017 | Neutre |
2018 | Tendance croissante |
2019 | Tendance croissante(force) |
C'est une marque fictive dont le cours de clôture change avec.
Je souhaite télécharger les données (fichier texte) que j'ai traitées, mais je me demande si Qiita ne peut télécharger que des images ...
Il s'agit d'un fichier csv de 944 lignes contenant les informations suivantes.
SampleStock01.csv
Entreprise fictive 01
Date,Prix ouvert,Prix élevé,Bas prix,le dernier prix
2016/1/4,9,934,10,055,9,933,10,000
2016/1/5,10,062,10,092,9,942,10,015
2016/1/6,9,961,10,041,9,928,10,007
2016/1/7,9,946,10,060,9,889,9,968
2016/1/8,9,812,9,952,9,730,9,932
2016/1/12,9,912,9,966,9,907,9,940
2016/1/13,9,681,9,964,9,607,9,928
2016/1/14,9,748,9,864,9,686,9,858
(Omission)
J'étudie simplement, donc je partirai d'un environnement propre. L'environnement d'apprentissage est
invite de commande
python -m venv stock
.\stock\Scripts\Activate
Après la mise à jour de pip, avec matplotlib et pandas
invite de commande
python -m pip install --upgrade pip
pip install matplotlib
pip install pandas
pip install Seaborn
Vérifier les packages installés
invite de commande
pip list
Package Version --------------- ------- cycler 0.10.0 kiwisolver 1.1.0 matplotlib 3.1.1 numpy 1.17.4 pandas 0.25.3 pip 19.3.1 pyparsing 2.4.5 python-dateutil 2.8.1 pytz 2019.3 scipy 1.3.2 seaborn 0.9.0 setuptools 40.8.0 six 1.13.0
Tout d'abord, essayez de lire avec pd.read_csv () sans penser à rien.
fail_case01.py
import pandas as pd
dframe = pd.read_csv('SampleStock01.csv')
Comme prévu, une erreur est renvoyée.
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte
La chose qui trébuche quand il s'agit de python est la partie d'E / S de fichier ... La réflexion est interrompue ici à chaque fois.
Cependant, l'exemple de panne 01 est une catégorie d'attente, et ici il s'agit simplement de spécifier le codage.
fail_case02.py
import pandas as pd
#Fichier CSV(SampleStock01.csv)Spécifiez le code de caractère de
dframe = pd.read_csv('SampleStock01.csv', encoding="SJIS")
Oui. je savais Cela échoue également ici.
pandas.errors.ParserError: Error tokenizing data. C error: Expected 5 fields in line 3, saw 9
Étant donné que la première ligne du fichier CSV est définie sur le nom de la marque, vous devez lire à partir de la deuxième ligne.
C'est juste une question d'ignorer la première ligne et de lire à partir de la deuxième ligne.
fail_case03.py
import pandas as pd
#Fichier CSV(SampleStock01.csv)Spécifiez le code de caractère de
dframe = pd.read_csv('SampleStock01.csv', encoding="SJIS", header=1)
print(dframe)
Date d'ouverture prix prix haut prix bas prix de clôture 2016/1/4 9 934 10 55 9 933 10 0 2016/1/5 10 62 10 92 9 942 10 15 2016/1/6 9 961 10 41 9 928 10 7 2016/1/7 9 946 10 60 9 889 9 968 2016/1/8 9 812 9 952 9 730 9 932 ... ... .. ... .. ... 2019/11/1 13 956 15 59 13 940 14 928 2019/11/5 13 893 15 54 13 820 14 968 2019/11/6 14 3 15 155 13 919 15 47 2019/11/7 14 180 15 54 14 57 15 41 2019/11/8 14 76 15 52 13 939 15 41
[942 rows x 5 columns]
J'ai pu le lire correctement dans la trame de données! J'en étais content.
CSV delimiter "," et digit delimiter "," sont mélangés </ font> </ strong> et ne peuvent pas être lus correctement dans le dataframe.
Fichier CSV que je voulais lire
SampleStock01.csv
Entreprise fictive 01
Date,Prix ouvert,Prix élevé,Bas prix,le dernier prix
2016/1/4,9,934,10,055,9,933,10,000
2016/1/5,10,062,10,092,9,942,10,015
2016/1/6,9,961,10,041,9,928,10,007
2016/1/7,9,946,10,060,9,889,9,968
2016/1/8,9,812,9,952,9,730,9,932
2016/1/12,9,912,9,966,9,907,9,940
2016/1/13,9,681,9,964,9,607,9,928
2016/1/14,9,748,9,864,9,686,9,858
(Omission)
Pour être honnête, je pense qu'il n'y a pas d'autre choix que de modifier le fichier lu pour cela, j'ai donc modifié le délimiteur CSV de "," à "caractère de tabulation". Cependant, que dois-je faire si je rencontre ce type d'événement lors de l'analyse des journaux d'activité? ?? Si quelqu'un connaît un bon moyen, faites-le moi savoir.
Quoi qu'il en soit, modifiez le CSV pour qu'il soit lu comme suit.
SampleStock01_t1.csv
Entreprise fictive 01
Date d'ouverture prix prix haut prix bas prix de clôture
2016/1/4 9,934 10,055 9,933 10,000
2016/1/5 10,062 10,092 9,942 10,015
2016/1/6 9,961 10,041 9,928 10,007
2016/1/7 9,946 10,060 9,889 9,968
2016/1/8 9,812 9,952 9,730 9,932
2016/1/12 9,912 9,966 9,907 9,940
2016/1/13 9,681 9,964 9,607 9,928
2016/1/14 9,748 9,864 9,686 9,858
(Omission)
J'ai essayé d'être honnête pour la quatrième fois en ajoutant un processus pour spécifier que le délimiteur est un caractère de tabulation dans le code jusqu'à présent.
Success_case.py
import pandas as pd
#Fichier CSV(SampleStock01.csv)Spécifiez le code de caractère de
import pandas as pd
#Fichier CSV(SampleStock01.csv)Spécifiez le code de caractère de
dframe = pd.read_csv('SampleStock01_t1.csv', encoding='SJIS', \
header=1, sep='\t')
print(dframe)
Date d'ouverture prix prix haut prix bas prix de clôture 0 2016/1/4 9,934 10,055 9,933 10,000 1 2016/1/5 10,062 10,092 9,942 10,015 2 2016/1/6 9,961 10,041 9,928 10,007 3 2016/1/7 9,946 10,060 9,889 9,968 4 2016/1/8 9,812 9,952 9,730 9,932 .. ... ... ... ... ... 937 2019/11/1 13,956 15,059 13,940 14,928 938 2019/11/5 13,893 15,054 13,820 14,968 939 2019/11/6 14,003 15,155 13,919 15,047 940 2019/11/7 14,180 15,054 14,057 15,041 941 2019/11/8 14,076 15,052 13,939 15,041
[942 rows x 5 columns]
Bien qu'il existe de nombreux problèmes tels que la spécification d'index et le type de colonne, read_csv a finalement été terminé. Pour les ouvrages de référence, c'est quelques lignes de travail, mais ...
Les E / S de fichiers sont le plus grand défi lorsqu'il s'agit de dataframes, mais d'autres personnes y iront-elles facilement? Non limité à dataframe, python dans son ensemble, non, les E / S de fichiers sont un démon pour moi depuis l'ère du langage C.
Une fois chargé, c'est facile car c'est un problème avec le programme. (
Recommended Posts